我目前正在做一个编程项目,我需要一些帮助。
这是我正在使用的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')?
答案 0 :(得分:2)
1。)您必须编写某种find(int)
方法,该方法返回一个节点,允许您获取对您要删除的节点的引用。
假设你有一个双重链接的,你可以只更改周围节点的引用,垃圾收集器将清除该节点的内存。
如果它是明确链接的,则需要使用for循环来找到要删除的节点,然后使用对当前节点之后的前一个节点的引用,更改下一个节点的引用在prev中是curr.next。
2.。)如果你编写一个find方法,你可以在节点中切换数据,或者你可以使用remove中的类似for循环来改变周围节点的引用。
3。)使用将对数据进行排序的节点编写选择排序。不需要移动节点,您可能只需切换数据。
for(Node curr = this.head; curr != null; curr = curr.next)
for(Node next = curr.next; next != null; next = next.next)
类似的东西。
答案 1 :(得分:0)
我假设您正在使用标准的Java“Linked List”集合,而不是实现自己的。
如果是这样,您所要做的就是查看Javadoc和/或Java集合上的任意数量的精细教程。
例如: