我目前正在做一个编程项目,我需要一些帮助。
这是我正在使用的LinkedList类:
class LinkedList {
Node cursor;
private Node head; // first node in the linked list
private int count;
public int getCount() {
return count;
}
public Node getHead() {
return head;
}
public LinkedList() {
head = null; // creates an empty linked list
count = 0;
}
public void addFront(int n) {
Node newNode = new Node(n);
newNode.setLink(head);
head = newNode;
count++;
}
public void deleteFront() {
if (count > 0) {
Node temp = head;
head = temp.getLink();
temp = null;
count--;
}
}
}
下面是我的问题:
我如何创建一个方法来删除LinkedList中任何位置的节点?假设第一个节点的位置为1,第二个节点的位置为2,以此类推。
我如何交换节点的位置比如说节点1和节点2?
我如何排序LinkedList基于升序的名称(假设名称是'albumName')?
1。您必须编写某种find(int)
方法,该方法返回一个Node,该Node将允许您获得对您想要删除的节点的引用。
假设你有一个双链接的节点,你可以改变周围节点的引用,垃圾收集器将清除该节点的内存。
如果它是符号链接的,则需要使用for循环来查找要删除的节点,然后使用对当前节点后面的前一个节点的引用,将prev中的next的引用更改为current .next.
2)。如果您编写find方法,则可以切换节点中的数据,或者可以使用类似的for循环从remove中更改周围节点的引用。
3)。使用将对数据进行排序的节点编写选择排序。节点不需要移动,您可能只需要切换数据。
for(Node curr = this.head; curr != null; curr = curr.next)
for(Node next = curr.next; next != null; next = next.next)
差不多。
我假设您正在使用标准的Java "链表"集合,而不是实现您自己的集合。
如果是的话,你所要做的就是看看Javadoc和/或任何关于Java集合的优秀教程。
例如:Collections: Linked List
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html