我正在尝试创建一个接受用户输入的链表并打印,但是,我的链表正在创建中,但我无法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
。有很多方法可以实现你想要的,比如:
- 将
create
方法内部的列表显示为:
while(ch!='n')
{ /* ... */ }
display(start);
sc.close();
- 更改方法返回类型,使其返回可用于遍历列表的
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);
}