在 java 中实现一个没有类的单向链表

Implement a singly linked list in java without classes

提问人:Lakshya Gupta 提问时间:10/6/2023 最后编辑:Lakshya Gupta 更新时间:10/9/2023 访问量:59

问:

我正在解决问题:https://www.codingninjas.com/studio/problems/introduction-to-linked-list_8144737?utm_source=striver&utm_medium=website&utm_campaign=a_zcoursetuf&leftPanelTab=0,在实现代码时,我收到错误,说“重复的类名:节点”。以下是我为此编写的代码:

 class Node {
 public static int data;
 public static  Node next;

 Node()
 {
     this.data = 0;
     this.next = null;
 }

 Node(int data)
 {
     this.data = data;
     this.next = null;
 }

 Node(int data, Node next)
 {
     this.data = data;
     this.next = next;
 }
 };



class implement {
 public static  Node head;
 static Node addatend(int value){
     Node temp=head;
     Node add= new Node(value);
     if(head==null){
        head=add;
     }
     else{
         while(temp.next!=null){
             temp=temp.next;
         }
         temp.next=add;
     }
     return head;
}



public class Solution {
 public static Node constructLL(int []arr) {
    // Write your code here
    Node ans=null;
    implement z = new implement ();
    for(int i=0;i<arr.length;i++){
        int t=arr[i];
       ans= z.addatend(t);

    }
    return ans;
}
}

任何人都可以指出代码中的错误吗?

java 链接列表 singlely-linked-list

评论

0赞 kiner_shah 10/6/2023
请正确格式化您的代码。
0赞 Lakshya Gupta 10/6/2023
您可以在问题中提供的链接中运行您的代码,然后运行它吗?
0赞 kiner_shah 10/6/2023
为什么一切都声明为 ?static
0赞 Lakshya Gupta 10/6/2023
我已经更改了问题的代码库,我是否应该从每个变量/方法中删除静态关键字?
0赞 kiner_shah 10/6/2023
您不必自己实现。它已经存在于他们的环境中。Node

答:

2赞 kiner_shah 10/6/2023 #1

请改用两个指针。

public static Node constructLL(int[] arr) {
    Node head = null;
    Node end = null;
    for (int a : arr) {
        if (head == null) {
            head = new Node(a);
            end = head;
        }
        else {
            end.next = new Node(a);
            end = end.next;
        }
    }
    return head;
}

替代解决方案 - 从末尾遍历数组并插入到前面的列表中:

public static Node constructLL(int[] arr) {
    Node head = null;
    for (int i = arr.length - 1; i >= 0; --i) {
        Node temp = new Node(arr[i]);
        temp.next = head;
        head = temp;
    }
    return head;
}

评论

0赞 kiner_shah 10/9/2023
@user85421,谢谢,我编辑了我的答案以包含这个替代解决方案。