为什么我的链接列表没有打印出来



我正在尝试创建一个接受用户输入的链表并打印,但是,我的链表正在创建中,但我无法print它。下面是代码:

import java.util.Scanner;
class Node
{
int data;
Node next;
}
public class LinkedList
{
public static void create(Node start)
{
Scanner sc = new Scanner(System.in);
Node a = new Node();
System.out.println("Enter Details:");
a.data = sc.nextInt();
a.next = null;
start = a;
System.out.println("Do you want to continue(Y/N)?");
char ch = sc.next().charAt(0);
while(ch!='n')
{
Node b = new Node();
System.out.println("Enter Details:");
b.data=sc.nextInt();
b.next = null;
a.next = b;
a=b;
System.out.println("Do you want to continue(Y/N)?");
ch = sc.next().charAt(0);
}
sc.close();
}
public static void display(Node start)
{
Node temp = start;
while(temp!=null)
{
System.out.println(temp.data);
temp = temp.next;
}
}
public static void main(String[] args){
Node start=null;
create(start);
display(start);
}
}

我找不到问题,请帮我找到如何print我的链接列表。

诊断非常简单:

Node start=null;
create(start);
display(start);

您正在null上调用display方法。

问题是您的create方法没有。。。不能。。。改变CCD_ 6变量的值。要实现这一点,您必须更改create,使其构建并返回一个列表,然后create()调用的结果分配给start

请注意,您可以(也应该(去掉create的参数,因为它的值实际上从未在方法中使用过。

工作代码为:

import java.util.Scanner;
class Node {
int data;
Node next;
}
public class LinkedList {
private static Node start;
public Node create(Node start) {
Scanner sc = new Scanner(System.in);
Node node = new Node();
System.out.println("Enter Details:");
node.data = sc.nextInt();
node.next = null;
start = node;
System.out.println("Do you want to continue(Y/N)?");
char ch = sc.next().charAt(0);
while (ch != 'n') {
Node b = new Node();
System.out.println("Enter Details:");
b.data = sc.nextInt();
b.next = null;
node.next = b;
node = b;
System.out.println("Do you want to continue(Y/N)?");
ch = sc.next().charAt(0);
}
sc.close();
return node;
}
public void display(Node start) {
Node temp = start;
while (temp != null) {
System.out.println(temp.data);
temp = temp.next;
}
}
public static void main(String[] args) {
LinkedList linkedList = new LinkedList();
Node node = linkedList.create(start);
linkedList.display(node);
}
}

start节点传递给create方法不会使其成为列表的头节点。它仍然是null。有很多方法可以实现你想要的,比如:

  1. create方法内部的列表显示为:
while(ch!='n')
{ /* ... */ }
display(start);
sc.close();
  1. 更改方法返回类型,使其返回可用于遍历列表的start(head(节点:
public static Node create(Node start)
{
// Creating list
return start;
}

方法调用:

public static void main(String[] args)
{
Node start=null;
start=create(start);
display(start);
}

相关内容

  • 没有找到相关文章

最新更新