链式线性表的就地逆置
2016-03-27 11:45
330 查看
#include <iostream>#include <cstdlib>#include <cstdio>采用单链表就地逆置的思想大概是这样:
1.断开单链表的头结点与第一个节点,这样头结点就变成了一个新的空链表;
2.然后从第一个结点开始,每次都取下原有链表的一个结点,插入到新链表表头(注意是从第一个结点开始 ,并不是第二个结点开始^-^);
3.然后到最后一个结点,就完事了。循环为:
<span style="font-family: Arial, Helvetica, sans-serif;">while(p){...... </span>
<span style="font-family: Arial, Helvetica, sans-serif;"> <span style="white-space:pre"> </span> }</span>
using namespace std;typedef struct LNode{int data;struct LNode *next;}LNode,*LinkList;void CreatList(LinkList &L,int n){L=(LinkList) malloc(sizeof(LNode));LinkList q=L;for(int i=0;i<n;i++){LinkList p=(LinkList) malloc(sizeof(LNode));scanf("%d",&(p->data));q->next=p;q=p;q->next=NULL;}}void ShowList(LinkList L){LinkList q=L->next;while (q!=NULL){cout<<(q->data)<<" ";q=q->next;}cout<<endl;}int ReverseList(LinkList H){LinkList p,q;p=H->next;H->next=NULL;while(p){q=p->next;p->next=H->next;H->next=p;p=q;}return 1;}int main(){LinkList La;int n;cin>>n;CreatList(La,n);ReverseList(La);ShowList(La);return 0;}
相关文章推荐
- 善用Linux与Windows中的筛选功能及其他有用功能
- mysql主从复制 详解
- Android开发之LocationManager和定位
- 40行代码聊天室
- Apple Pay的一些介绍
- Android5.0 之 TabLayout配合ViewPager实现界面切换
- 数学归纳法初探
- hdoj-1982-Kaitou Kid - The Phantom Thief (1)
- Object-C基础(5)——指针
- lintcode:Permutations
- HDOJ 幸福指数
- 反射发出--Emit
- VB关于红糖水与白糖水的交换
- MyBatis SQL动态装配
- Java线程面试题 Top 50
- [环境部署] Windows Server 2016 配置指南 之 安装 Redis3.0
- 敏捷开发综述
- 03-树3 Tree Traversals Again (25分)
- linux初学之7——vim编辑器
- IOS多线程开发其实很简单