永发信息网

关于java的链表地址指向的问题

答案:2  悬赏:60  手机版
解决时间 2021-04-14 14:26
在链表类class liste 进行遍历的时候(不是为了遍历,但是addlast要经过遍历找到链表尾),如下程序:

public void addLast(int key){
Element node=new Element(key);
Element current=head;
if (head==null){
head=node;
return;
}
while (current.getNext()!=null){
current=current.getNext();
}
current.setNext(node);
}
其中对current=current.getNext();这句话有些疑问。
首先Element current=head;是表明了对current这个变量并没有分配新的空间,而是指向了head所指的空间是吗?
那么在current=current.getNext();这句话中,current被赋予了新的值,但是为什么head的值并没有发生改变呢?
从程序的运行结果来看,addlast这个函数的确可以正常完成它的功能,所以我觉得很奇怪,在这里的参数传递机制到底是怎么样的?难道是因为current是局部变量的关系,所以current改变的时候,head却不会跟着变化?如果head不会随current的赋值变化而变化,那么最后一句current.setNext(node);岂不是不能完成在链表尾插入数据的功能了?百思不得其解,请诸位解答!
附class Element的代码:

public class Element {
private int key;
private Element next;

public Element(int key){
this.key=key;
}

public Element(int key,Element next){
this.key=key;
this.next=next;
}


public int getKey() {
return key;
}


public void setKey(int key) {
this.key = key;
}


public Element getNext() {
return next;
}


public void setNext(Element next) {
this.next = next;
}


@Override
public String toString() {
return "(" + key + ")";
}

}
最佳答案
在java中 比如,String str1 ="abc",在虚拟机内会开辟一段空间存放“abc”,但是你再次给 str1赋值,str1就会只想新开辟存储的空间的位置,而原来abc的位置,在不被使用的情况先会被java回收机制清空。如你说的,开始 current =head,但是并有head=XX的动作,说明没有给head赋值,所以head不会变,而一直有current赋值,所以current一直指向新的空间,而这些是与head无关的动作。PS: 下面代码太长没看
全部回答
1. position.link 当前指向节点的下一个节点地址 2. new listnode(newdata, position.link); 下一个节点地址给了新数据,也就是说,将新数据里面存得下一个节点的地址改成当前节点的下一个节点地址。 3. position.link = new什么什么 新数据的地址给了当前地址的记录下一个节点地址变量。 链表存得不应该是自己得地址吧 否则还怎么链。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
新仙剑奇侠传怎么一打狐妖女就不动了
可以免费开通超级QQ吗?
DNF为什么不好使?
长丰超市地址在哪,我要去那里办事
DNF为什么找不到DINPUI8.dII?
五月底去黄山穿什么,重庆七月五天旅游带什么
苹果的电脑装了windows系统好吗
湘潭市十六中2011新生哪个班最好
我的下嘴唇长了两颗痣,有什么说法吗
简易电动车冲电口是反击的可是充电器又不能改
一个女生为了你去打架你会怎么办?
那些游戏好玩?
完美前传太白之灵怎么获得
钢琴中C调do的频率是261.6HZ,钢琴中的发声体
从一张长16厘米,宽12厘米的长方形纸片上,剪
推荐资讯
主持人手里拿的叫什么,猜人游戏这个人叫什么
必胜客下沙宝龙餐厅怎么去啊,有知道地址的么
本科学历要考哪些科目?
刷机时双清下没有yes选项,全是no,怎么办
2017年下半年深圳窗帘展销会什么时间开
DNF江苏8区游戏币和人民币的比例是多少?
我是一个打工仔,
为什么我的QQ音乐安装时提示抽取:无法写入文
久久爆品汇怎么支付,微信,支付宝都支付不了
can you fly a plane?怎么回答
阜阳车辆违章用微信怎么查询
男生一般都喜欢什么类型的女孩?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?