一种简单的单链表逆序、反转的方法
来源:互联网 发布:厦门市公安局网络公章 编辑:程序博客网 时间:2024/05/18 03:27
假定一个单链表,其排列是这样的:P1--->P2--->P3--->.................
其中,P1就是头结点。
反转思路是:
(1)第一步反转,P1和P2, 也就是使得P2->next=P1. 如图: P1<----p2--->P3
(2)第二步,采用同样的方式,反转P3和P2,也就是使得;P1<---P2<---P3
既然是同第一步一样的方式,就不能简单地P3-->Next=P2完事了,否者的话得穷举所有结点,一相邻两个结点为单位,挨个手工反转了。
于是想到利用指针的特性,重用第一步的反转。这个时候只要使得P1指向P2,P2指向P3,再重用第一步反转P1和P2,即P2->next=P1.。相当于从P1开始整体指针往右移动,这样P2和P3之间的反转由于指针重新赋值了,变成了可以直接重用P1和P2的反转了。
算法实现如下:(leetcode代码,通过调试)
class Solution {public:
ListNode* reverseList(ListNode* head)
{
if ((NULL==head) || (NULL==head->next) ) return head;
ListNode* P1 = head;
ListNode* P2 = P1->next;
P1->next=NULL;
while ( NULL!=P2 )
{
ListNode* tmp=P2->next;
P2->next=P1;
P1=P2;
P2=tmp;
}
return P1;
}
};
0 0
- 一种简单的单链表逆序、反转的方法
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的两种方法
- 单链表的反转/逆序的三种方法
- 单链表反转/逆序的三种方法(整理)
- 单链表的逆序打印方法简单分析
- 反转单链表的方法
- 一种巧妙的反转字符串的方法及思考过程
- 数组的反转的简单方法
- 一种不用额外空间反转整数的方法
- 字符串反转的几种简单方法
- 单链表的逆序----简单实现
- 单链表反转的递归方法
- 关于单链表的反转一种复杂的想法
- 创造性想象的一种简单练习方法
- 一种简单实用的全屏方法
- mysql数据库数据同步
- hibernate中的N+1问题
- poj 1125 Stockbroker Grapevine (Floyd)
- 二叉树的最小深度
- 快速幂小trick
- 一种简单的单链表逆序、反转的方法
- 用优雅的方式重装Windows 10不可使用的应用程序
- Array对象
- hdu1754 I Hate It
- 自定义注解开发
- 二叉树的最小深度
- connect & send 在三次握手过程中的有趣问题
- leetcodeOJ 43. Multiply Strings
- ThreadLoacal引起的内存泄露