Node* node = func(node1);
while (node) {
cout << node->val << endl;
node = node->next;
}
return 0;
}
自己写的每次都会打结,成环了。
Node* func(Node* head) {
Node* nowHead = head, * sourceLink = head->next, * tempNode = NULL;
while (sourceLink != NULL)
{
tempNode = sourceLink; // 把源链表首节点取出
tempNode->next = nowHead; // 取出的节点接在目标链表的首部
sourceLink = sourceLink->next; // 源链表首节点后移
nowHead = tempNode; // 目标链表首部更改为新的节点
}
head->next = NULL; // 别忘了把原先的链表头指向NULL
return nowHead;
}
这个就不会成环吗?一眼我就看出来会成环。
只要有这一行在前,就绝对是要成环的:
tempNode->next = nowHead;
为什么?经验,自己想想。
其实知道它会成环,在看两眼,也就看到玄机了。
成环有几个问题存在?
1、死循环,稍微学过链表都应该要知道这个吧。
2、无法联系到后面的节点。
先不管第一点,能想到第二点,就明白了。
我在你成环之前把后面被环屏蔽的节点事先取出来,在你成环之后重新给你接上去,破坏你的闭环。
关键就在这一行的位置:
sourceLink = sourceLink->next;
晚写一步,就玩不转了。
那么,现在用眼睛看出来的有:
1、取出环后节点;
2、反转成环;
3、破坏闭环;
4、返回第一步,直到退出条件成立。
初始状态:
取出后面的节点:
依旧是要成环的:
看到没,依旧是要成环的。
那最后呢?
最后如何让自己一步步成为技术专家
说句实话,如果一个打工人不想提升自己,那便没有工作的意义,毕竟大家也没有到养老的年龄。
当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。
推荐一份Java架构之路必备的学习笔记,内容相当全面!!!
成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。
你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!
进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!
【关注】+【转发】+【点赞】支持我!创作不易!
半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。
你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!
进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!
【关注】+【转发】+【点赞】支持我!创作不易!