永发信息网

关于java的链表实现问题

答案:2  悬赏:50  手机版
解决时间 2021-02-07 21:22
public void isnert(int data){ //插入方法
if(tail == current ) tail = current.next;
if(head == current) head.next = current;

node temp = new node(data);
temp.next = current.next;
current.next = temp;

cnt++;
}

public void print(){ //打印方法
while(head.next != tail)
{
System.out.println(head.next.value);
current = current.next;
}

}

为什么我插入3.6后,执行print,一直不停输出6?
最佳答案
while (p != null) {
q = p;
p = p.next;
q.next = rev.header;
rev.header = q;

}
解释下你为什么错了:
q=p;
q.next=rev.header;
rev.header=q;
p=p.next;
第一步:q=p;这两个同时指向一个Node。
第二步:q.next=rev.header;将当前Node的next指向新链表的头。但是,此时p的next也指向了这个新链表的头。这就导致了没有入口通向我们原来的链表了。
第三步:rev.header=q;调整新链表头的位置为第一个Node。此时,p,q,rev.header同时指向一个Node,就是这个新链表的头。我们现在已经完全和目标链表失去了联系。
第四步:p=p.next;p指向了Link rev = new Link(0);最初的头结点。
如此循环,表中只有两个数据在不停地加到新链表中,分别是两个链表的头。
全部回答
楼上发那么多有意思么? 其实这种问题,首先要从宏观上理解道理,代码那都是细节问题,只要宏观上理解了,再写代码就是小case。 迭代,是一种遍历的实现方式, 假设是数组 int a[10] 那么你for(int i=0;i<10;i++) a[i]的方式是可以得到数组所有值的吧。这种是常见的遍历方式 但是链表就不一样了,如果让你用for循环,你觉得i<10, 这个表达式,后面那个10,也就是长度值从哪里来呢? 链表是连起的,像火车一样,你看到的只有火车头,你不晓得后面有几节,也许你会想,我先数下有几节,就行啦?其实也不行,你想一下,链表里的每一个元素,你想得它的值,你必须首先得到前一个的值,推理下去,你必须知道首元素的值。 但数组就不一样了,可以直接用下标,一下精确到位。链表只能从头一个个的数过去。 这就是两种的区别
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
航头镇中心幼儿园地址在哪,我要去那里办事
请问欧柏仪表压力变送器从制作结构分类哪两种
世界各地有哪些奇怪的节日???
本人是技校生,参加过高职高考,差几分没考上
周浦镇幼儿园地址在什么地方,想过去办事
6点8减80除2乖5的简便方法
学校派遣证什么时候发
优尚部件有限公司地址在哪,我要去那里办事
during his life 还是lifetimewhy
天地幼儿园(私立)怎么去啊,我要去那办事
大沈轮胎我想知道这个在什么地方
盐仓镇苗苗幼儿园地址在什么地方,想过去办事
形容好的产品因为它的“好”而声名远扬,得到
上海市浦东新区杨家渡幼儿园地址在哪,我要去
扬石洞这个地址在什么地方,我要处理点事
推荐资讯
有什么高中数学比较好用的练习册
克拉美甲地址在什么地方,想过去办事
汉港公路桥/S105(路口)怎么去啊,有知道地址
【休克抢救流程】休克抢救流程的ABCDE法则是
玻璃保鲜盒重合在一起了,怎么才能分开啊?洗
【问两个英文句子This is the factory {which
新婚不久,常会和老公吵架,觉得很累,不知道
喔才换的前挡风玻璃为啥下雨时快刮的时候像玻
地电位是什么意思?
急急急,飞机起飞晚了,乘客要投诉空姐
do you konw the girl sitting there?改句不
新申请的qq空间,要修改资料时为什么无法修改
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?