【问题标题】:How can I create a link-list in order to test a method that uses a Node class?如何创建链接列表以测试使用 Node 类的方法?
【发布时间】:2017-09-08 10:03:23
【问题描述】:

我知道链表包含节点,每个节点存储一个值和对下一个节点的引用。我见过使用这些节点的类(如链表堆栈和队列),并且理解它们没有问题。但我不明白这些节点是如何实际创建的。我看过教程,每个教程看起来都在做完全不同的事情,所以我发现很难掌握整体概念。

我有一个使用节点的 Java 方法:

public Node fun(Node x) {
   Node first = x;
   Node magic = null;
   while (first != null) {
      Node second = first.next;
      first.next  = magic; 
      magic       = first;
      first       = second;
   }
   return magic;
}

我想测试这个方法。但是为了实际测试这个方法,我需要一个链表(否则我会得到一个错误,因为 Node 无法识别)。这就是我迷路的地方。如何创建 Node 类? Node 类和 Linked-list 类是两个完全不同的东西吗?是这样,链表类会是什么样子?

【问题讨论】:

    标签: java linked-list nodes


    【解决方案1】:

    假设您的 Node 课程是这样的:

    class Node {
        int value;
        Node next;
    
        public Node(int value) {
            this.value = value;
        }
        // setters and getters
    }
    

    您可以通过这种方式创建linked list

     Node first = new Node(0);
     first.next = new Node(1);
     first.next.next = new Node(2);
     first.next.next.next = new Node(3);
    

    你可以遍历列表:

    while(first != null) {
        System.out.println(first.value);
        first = first.next;
    }
    

    【讨论】:

    • 所以链表是一个单独的类?
    • @TheSaviour - 在这种情况下,链表类不存在。 first 是列表的头部,你可以从中获取所有数据。
    • 但是如何应用到上面的方法呢?
    • @Thesaviour,你是什么意思?您只需使用first 节点并在它不为空时进行迭代,每次分配next 节点
    • Node first = new Node(0); first.next = new Node(1); first.next.next = new Node(2); first.next.next.next = new Node(3);
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    相关资源
    最近更新 更多