【问题标题】:How do I acces elements of Link List?如何访问链表的元素?
【发布时间】:2011-03-06 15:44:18
【问题描述】:

由于 Java 中没有自引用指针的概念...我该如何着手解决这个问题...

我不允许在 Java 中使用内置的链接列表类...

但是“应该遵循与 C 中相同的创建链接列表的方法。”什么可能是最好的替代 node->next, node->prev in Java...

【问题讨论】:

  • 您的问题能具体一点吗?
  • 在 Java 中默认有一个 LinkedList 可用。 ArrayList 足以满足大多数列表要求
  • 我不允许在Java中使用内置的链接列表类...但是“应该遵循与C中相同的链接列表创建方法。”什么可能是最好的替代 node->next, node->prev in Java...
  • @user645757:下次:在问题中添加这些内容,有一个“编辑”链接。 (我现在为你做了。)

标签: java linked-list


【解决方案1】:

在 java 中,链表可以通过创建一个具有自身成员变量的类来实现,而不是具有指向下一个节点的指针和 var 的对象。

下面列出了一个示例实现:

 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()
}

【讨论】:

    【解决方案2】:

    “this”关键字是指向自身的指针。 关于您的其余问题 - 请澄清。

    【讨论】:

      猜你喜欢
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多