话不多说,我们先来看看我们的单链表
大致的思路是将下一个指针插入到头结点的后面,比如【1,2,3】就会变成【2,1,3】再接着变成【3,2,1】
接下来我们看看图来帮助我们理清指针的指向
这里我们需要引入一个工作指针 *p,指向的就是【下一个结点】(黄色笔迹表示新的操作)这里将头结点置空可以认为是后续步骤的统一
整理一下这个图就会变成这样,我们能够看出来其实指针p是断链后防丢的,而p的“前一个结点”实际上就是逆序后的最后一个结点,其next指针为空
接下来看我们第一个倒置
先引入第二个工作指针 *q,它会接替p的位置好让p可以去指向下一个结点,然后q这个结点的next会接上前一节链表最后一个结点的指向(上一个指向NULL ,然后前一节的链表会接上当前结点也就是q的指向
图乱?没事我们理一理