2011-03-05 83 views
1

由於在Java中沒有自我闖民宅指針的概念...我如何着手解決這個問題...如何訪問鏈接列表的元素?

我不能使用內置類鏈接列表中的Java ...

但是「應該像C中一樣遵循創建鏈接列表的相同方法。」什麼可能是Java中最好的替代節點 - >下一個,node-> prev ...

+4

你能更具體地回答你的問題嗎? – 2011-03-05 11:49:32

+1

Java中默認存在LinkedList。 ArrayList對於大多數列表需求已足夠 – 2011-03-05 11:50:54

+0

我不允許在Java中使用鏈接列表類中的內置...但是「應該遵循與C中一樣創建鏈接列表的方法」。什麼可能是最好的替代品node-> next,node-> prev in Java ... – 2011-03-05 11:53:29

回答

5

而不是一個指向下一個節點和var的對象,在java鏈接列表中可以通過使用自己的成員變量創建一個類來實現。

樣本實現列舉如下:

1 public class Node 
2 { 
3  private int myInt; 
4  private Node nextNode; 
5  
6  public Node(int val) 
7  { 
8   myInt = val; 
9   nextNode = null; 
10   return this; 
11  } 
12 
13  public int getMyInt() 
14  { 
19   return myInt; 
20  } 
21 
22  public Node(Node prev, int val) 
23  { 
24   prev.nextNode = this; 
25   myInt = val; 
26   nextNode = null; 
27  } 
28 
29  public void addNode(Node newNode) 
30  { 
31   nextNode = newNode; 
32  } 
33 
34  public void printNodes() 
35  { 
36   System.out.println(myInt); 
37   if (nextNode != null) 
38   { 
39    nextNode.printNodes(); 
40   } 
41  } 
42 
43  public void printNode() 
44  { 
45   System.out.println(myInt); 
46  } 
47 
48  public Node nextNode() 
49  { 
50   return this.nextNode; 
51  } 
52 } 

要創建一個鏈接列表,創建頭:

Node head = new Node(1); 

這個節點類有將節點添加到列表中的方法有兩種:

Node secondNode = new Node(head, 2); 

head.addNode(new Node(2)) 

這裏是值1的列表的例子 - 10

Node head = new Node(1); 
Node tempPtr = head; 

while (tempPtr.getMyInt() <= 10) 
{ 
    tempPtr.addNode(new Node(tempPtr.getMyInt()+1)); 
    tempPtr = tempPtr.nextNode(); 
} 

現在你可以打印通過列表迭代訪問此列表中的元素。

tempPtr = head; 
while (tempPtr != Null) 
{ 
    tempPtr.printNode() 
    tempPtr = tempPtr.nextNode() 
} 
+0

謝謝..對於快速回復... – 2011-03-05 11:59:15

0

「this」關鍵字是指向自我的指針。 重新提出您的問題的其餘部分 - 請澄清。