【剑指Offer】面试题16:反转链表
来源:互联网 发布:java 文件迁移 编辑:程序博客网 时间:2024/06/09 03:38
一:题目描述
输入一个链表,反转链表后,输出链表的所有元素。
二:解题思路
想反转一个链表,对于每一结点要改变它Pre与nextj结点的方向
所以我们必须要记住当前节点,它的前一个结点以及后一个结点
同时要考虑边界情况 头指针为空或者只包含一个结点
三:代码实现
/*struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { //想反转一个链表,对于每一结点要改变它Pre与nextj结点的方向 //所以我们必须要记住当前节点,它的前一个结点以及后一个结点 //同时要考虑边界情况 头指针为空或者只包含一个结点 //边界条件:头结点为空或只包含一个结点,不用反转,直接返回头指针 if(pHead==NULL || pHead!=NULL && pHead->next==NULL) return pHead; //包含多个结点,反转需要记录当前节点,它的前一个结点,它的后一个结点 ListNode* pNode=pHead; //当前节点 ListNode* pPre=NULL; //初始化当前节点的前一个节点为空 //因为反转后头结点变成节点,头结点的前一个节点变成尾结点的下一个节点,所以设置NULL ListNode* pReverseHead=NULL; //反转后的头结点初始化为空,最终他等于原始链表的尾结点 while(pNode!=NULL){ //保存当前节点的下一个节点 ListNode* pNext=pNode->next; //如果是尾结点,将其赋值给反转后的头指针 if(pNext==NULL) pReverseHead=pNode; //改变指针方向 pNode->next=pPre; //修改pPRe:当前节点为下一个节点的前节点 pPre=pNode; //遍历下一个节点 pNode=pNext; } return pReverseHead; }};
阅读全文
0 0
- 《剑指Offer》面试题:反转链表
- [剑指offer][面试题16]反转链表
- 【剑指offer】面试题16:反转链表
- 剑指offer 面试题16 反转链表
- 剑指Offer面试题16 反转链表
- 《剑指Offer》面试题16:反转链表
- 《剑指Offer》学习笔记--面试题16:反转链表
- 剑指offer 面试题16—反转链表
- 【剑指Offer学习】【面试题16 :反转链表】
- 剑指offer面试题16-反转链表
- 剑指offer面试题16之反转链表
- 剑指offer:面试题16 反转链表
- 剑指offer-面试题16:反转链表
- 剑指offer之面试题16:反转链表
- 剑指Offer----面试题16:反转链表
- 剑指offer面试题16:反转链表
- 剑指offer--面试题16: 反转链表
- 剑指offer——面试题16:反转链表
- Jenkins构建项目,发布远程到服务器(一)
- linux setsockopt函数
- HTML-Link标签
- mybatis 入门下
- QFileSystemModel只显示名称,不显示size,type,modified
- 【剑指Offer】面试题16:反转链表
- Hibernate自关联
- echarts的饼图制作分析
- 20170717
- 【Linux】在Linux中安装bugzilla
- php的crc32函数使用时需要注意的问题(不然就是坑)
- 排序算法合集
- 原生js和jquery对照
- FPGA基础设计(四):IIC协议