使用Java实现自定义链表中的方法



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

这是我正在使用的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')?

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

相关内容

  • 没有找到相关文章

最新更新