使用Java在自定义链接列表中实现方法

时间:2013-01-01 00:50:03

标签: java linked-list

我目前正在做一个编程项目,我需要一些帮助。

这是我正在使用的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--;
        }
    }
}

以下是我的问题:

  1. 如何在任何位置创建一个方法来删除LinkedList中的节点?假设第一个节点的位置为1,第二个节点的位置为2,依此类推。

  2. 如何交换节点的位置,比如节点1和节点2?

  3. 如何根据名称按升序对LinkedList进行排序(假设名称为'albumName')?

2 个答案:

答案 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集合上的任意数量的精细教程。

例如: