2013-01-01 52 views
0

我目前正在做一個編程項目,我需要一些幫助。使用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')?

+0

你是否正在實現自己的節點鏈表? – irrelephant

+0

我正在使用我在網上找到的鏈表類。我是否需要粘貼代碼? – Deon

+0

如果您需要代碼幫助,它始終有助於發佈代碼。 –

回答

0

我假設你使用的是標準的Java「Linked List」集合,而不是實現你自己的。

如果是這樣,你所要做的就是查看Javadoc和/或任何有關Java集合的精美教程。

例如:

+0

感謝您的意見。但是我很困惑這個教程,因爲它們在主類中實現。我需要做的是將方法添加到鏈接列表類中,而不是主要的。謝謝! – Deon

2

1)你必須寫某種find(int)方法返回一個節點,這將讓你得到的對您要刪除的節點的引用。

假設你有一個雙鏈接的,你可以改變周圍的節點的引用,並且垃圾收集器將清理該節點內存不足。

如果它是有意義鏈接的,則需要使用for循環找到要刪除的節點,然後使用對當前節點之前節點的引用,將prev中的next引用更改爲curr.next。 2)如果你編寫了一個find方法,你可以在節點中切換數據,也可以使用類似的for循環來改變周圍節點的引用。

3.)使用將排序數據的節點編寫選擇排序。節點不一定需要移動,你可能只需要切換數據。

for(Node curr = this.head; curr != null; curr = curr.next) 
    for(Node next = curr.next; next != null; next = next.next) 

就是這樣的。