当前位置: 代码迷 >> Java相关 >> java链表有关问题
  详细解决方案

java链表有关问题

热度:35   发布时间:2016-04-22 21:10:05.0
java链表问题?
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操作要在这里做
}
  相关解决方案