我们如何创建不同引用的n个节点?

时间:2019-02-07 13:45:29

标签: java

我必须创建一个链表数据管理项目(单个),我对如何创建不同引用的节点感到困惑。据我所知,节点是一个对象,要创建一个对象,我们只需编写(classname ref = new constructor()。现在我要保存的是第一位员工的数据

在一个节点中,第二个雇员数据在第二个节点上。。。这是我的问题,对于第二个节点,我需要再次编写语法来创建第二个节点,如果我想保存n个员工记录,如何编写n个节点的语法。我知道一个节点包含两个内容,即第二个节点的数据和地址。例如:

class node {
    String data ; 
    node next;
    node(String data , node a ){
        this.data = data;
        next = a ;
    }
}
main(){         
    node n1 = new node("a",n2); 
    node n2 = new node("b",null);
    till nth.
        /*well i thought that if i could loop this so that it automatically 
         *create nodes but even if i did that then the data will be saved on same 
         reference/address */
}

希望我已根据您的需要澄清了我的问题。

3 个答案:

答案 0 :(得分:3)

仅迭代并保留对您在上一次迭代中创建的节点的引用。

List<String> data = Arrays.asList("a", "b", "c");

Node previousNode = null;
for (String datum : data)
{
    previousNode = new Node(datum, previousNode);
}
//previousNode now contains a reference to the last node (C)

答案 1 :(得分:0)

无法在循环中创建多个名称不同的变量。但是,您可以将它们放在列表中,或者-因为本质上是在创建链接列表-您可能只想保留最后创建的节点,并在需要对它们执行任何操作时遍历嵌套节点。

这将为您提供变量n中的最后一个节点:

Node n;
Arrays.asList("a", "b", "c", ...).forEach(s -> n = new Node(s, n));

这将为您提供节点列表:

Node n;
List<Node> nodes = new ArrayList<>();
for (String s : Arrays.asList("a", "b", "c", ...)) {
  n = new Node(s, n);
  nodes.add(n);
}

答案 2 :(得分:0)

算法

  1. 创建一个headref来保存列表的开头
  2. 遍历您的列表。对于每次迭代,将其分配给head.next = newNode
  3. 前进head => head = head.next
  4. 根据需要重复2和3
  5. 您的列表将以ref作为标题

代码

List<String> list = Arrays.asList("a", "b", "c", "d", "e");
Node head = new Node(list.get(0), null);
Node ref = head;

for (int i = 1; i < list.size(); i++) {
  head.next = new Node(list.get(i), null);
  head = head.next;
}

// Your list is ready, you can iterate through it as such
while (ref != null) {
  System.out.println(ref.data);
  ref = ref.next;
}