本系列文章为《剑指Offer》刷题笔记。
刷题平台:牛客网
书籍下载:共享资源
输入一个链表,反转链表后,输出链表的所有元素。
这个很简单,我们使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。
#include <iostream> using namespace std; typedef struct Node{ int data; Node *next; } Node, *List; Node * reverseList(List head){ //定义三个指针,保存原来的连接的状态 //当前结点指针 Node *pnow = head; //当前结点的前驱指针,初始化是 NULL Node *pre = NULL; //当前结点的后继指针,初始化也是 null Node *pnext = NULL; //定义尾指针 Node *tail = NULL; //开始遍历链表 while(pnow != NULL){ //如果当前结点不是 null,那么初始化 pnext 指针指向当前结点的下一个结点 pnext = pnow->next; //如果找到了尾结点,初始化 tail 指针 if(NULL == pnext){ tail = pnow; } //进行链表的反转,当前结点的 next 指针指向前一个结点,实现链表方向的反转,此时发生了断链 pnow->next = pre; //勿忘断链的情形,需要使用 pre 指针保存状态,pre 等价于是后移一个结点 pre = pnow; //pnow 后移一个结点 pnow = pnext; } return tail; }
python
# -*- coding:utf-8 -*-
原文:https://www.cnblogs.com/sunforday/p/10573143.html