2、单链表的反转
来源:互联网 发布:知乎 卖水果平台 编辑:程序博客网 时间:2024/05/16 14:47
分析:
每次都将原第一个结点之后的那个结点放在L后面,下图是原始的单链表。
为了反转这个单链表,我们先让头结点的next域指向结点2,再让结点1的next域指向结点3,最后将结点2的next域指向结点1,就完成了第一次交换,顺序就变成了Head-结点2-结点1-结点3-结点4-NULL,然后进行相同的交换将结点3移动到结点2的前面,然后再将结点4移动到结点3的前面就完成了反转。
#include<iostream>
#include<cstdlib>const int MaxSize = 101;
using namespace std;
typedef struct ListNode{
int data;
struct ListNode *next;
}ListNode;
void ListNodeReserve(ListNode *L)
{
ListNode *temp;
ListNode *p;
temp = L->next;
while(temp->next!= NULL)
{
p = temp->next;
temp->next = p->next;
p->next = L->next;
L->next = p;
}
}
void Print(ListNode *L)
{
ListNode *p;
p = L->next;
while(p != NULL)
{
cout<<p->data<<endl;
p = p->next;
}
}
int main()
{
int num;
ListNode *A;
ListNode *r;
ListNode *s;
A = (ListNode*)malloc(sizeof(ListNode));
r = A;
while(cin>>num)
{
s = (ListNode*)malloc(sizeof(ListNode));
s->data = num;
r->next= s;
r = r->next;
}
r->next = NULL;
ListNodeReserve(A);
Print(A);
return 0;
}
0 0
- 2、单链表的反转
- 单链表的反转
- 单链表的反转
- 单链表的反转
- 单链表的反转
- 单链表的反转
- 单链表的反转 c++
- 单链表的反转
- 单链表的反转
- 单链表的反转问题
- 单链表的反转实现
- 单链表的反转
- 单链表的反转
- 单链表的反转
- 单链表的反转
- 单链表反转的实现
- 单链表的反转
- 单链表的反转
- POJ-1613 Cave Raider
- 在ubuntu内部实现系统升级
- nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
- 深入理解HTTP协议
- 数据库的最简单实现
- 2、单链表的反转
- MyEclipse2014安装ADT插件、SDK、创建模拟器
- 非常好用的Unity测试工具
- 人脸识别代码
- android CheckBox的运用
- Spring的IOC原理[通俗解释一下]
- 推荐系统中的常用算法
- Ubuntu 普通用户访问fastboot及adb设备
- Android NDK 开发教程六:Android.mk文件