您的位置:首页 > 其它

链式线性表的就地逆置

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;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: