package 自习;
import java.util.*;
class Note
{
int x;
Note next;
Note(int a)
{
x=a;
next=null;
}
}
public class LinkList {
void put(Note J,int a)
{
J.next=new Note(a);
J=J.next;
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int N,i=1,j;
LinkList A=new LinkList();
System.out.println("输入要建立的链表大小N:");
N=input.nextInt();
System.out.println("Please input the "+i+"th number.");
j=input.nextInt();
Note X=new Note(j);
Note Y=X;
for(i=2;i<=N;i++)
{
System.out.println("输入第 "+i+"个数:");
j=input.nextInt();
A.put(X,j);
}
for(i=1;i<=N;i++)
{
System.out.println(Y.x);
Y=Y.next;
}
}
}
为什么结果生成的链表中最多只含有两个元素?是因为A.put(X,j);的问题吗?如果不采用下面的方法
for(i=2;i<=N;i++)
{
System.out.println("Please input the "+i+"th number.");
j=input.nextInt();
X.next=new Note(j);
X=X.next;
}
那么怎么办?
------解决方案--------------------
void put(Note J,int a)
{
J.next=new Note(a);
// J=J.next;
// 调用此方法时为参数对象复制了一个引用J,J只在此方法中有效,J=J.next并没有修改参数的引用
}
for(i=2;i<=N;i++)
{
System.out.println("输入第 "+i+"个数:");
j=input.nextInt();
A.put(X,j);
X=X.next;
// next操作要在这里做
}