2021年的最后个把月,收拾心情,整装待发,请让我越来越忙碌吧!
解了一道OJ题,一起来看看。
原题如下:
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
审题:
题目描述还是挺简单的,就是给你一个单链表让它的头变尾,尾变头后,返回新的头。
可能给我们的单链表情况:
1.空单链表;
2.只有一个结点的单链表;
3.有多个结点的单链表。
对于前两种情况,我们都还是很好进行处理的,只需要返回原来的头即可。现在一起来看看如何处理第三种情况。
一.点不变箭头变
假设有如下的单链表:
如何让这个单链表头变尾,尾变头?第一种实现方式,我们可以让它们的箭头反过来指,如下:
算法思路:
让原来后继结点的next域包含前驱结点的地址(第一个结点的next域赋值为NULL),就可以将箭头的指向改变。
代码设计:
需要三个指针,分别是新的头指针newHead(初始化为NULL),指向当前结点的指针cur(即指向需要改变next域结点的指针,初始化为第一个结点)和指向当前结点的下一个结点的指针curNext,如下: