get 到O(1)反转链表(尾插法)的那个点

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,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!

进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!

【关注】+【转发】+【点赞】支持我!创作不易!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值