反转链表实际在做什么

第 1 步:原来:3→7→5→9 第 2 步:3 的 next 掉头指回去 第 3 步:prev、cur 各前进一步 第 4 步:7 的 next 掉头指回去 第 5 步:prev、cur 各前进一步 第 6 步:5 的 next 掉头指回

开始练习 →

改指向之前为什么先存住 next

掉头之前必须先用一个变量存住 cur->next,因为【0】。

开始练习 →

反转之后第一个是谁

运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; struct Node {

开始练习 →

反转之后最后一个是谁

运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; struct Node {

开始练习 →

三个指针把链掉个头

补全 reverse:用 prev / cur / nxt 三个指针原地反转,返回新的头。补全后输出第一个人的名字。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

掉头之后尾巴上是谁

同一个 reverse。这回走到底,输出反转后最后一个人的名字。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

中间那两个也得跟着掉头

只把头尾接对是不够的。同一个 reverse,这回输出反转后第二个人的名字——中间没接对的话,这里就走不到。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

反转的三条验收

写完 reverse 之后一次验三条:第一个是「南风」、最后一个是「阿岚」、总数还是 4。三条全过输出 反转成功,否则输出 有问题。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

怎么判断链上有没有环

第 1 步:slow、fast 都从头出发 第 2 步:slow 走一步,fast 走两步 第 3 步:再来一轮 第 4 步:fast 到头,slow 在正中间 3 7 5 9 4 ∅ slow fast 判断链表有没有成环,最经典的办法是

开始练习 →

有环时快慢指针会怎样

如果链上真有环,快慢两个指针最后会【0】。

开始练习 →