反转带头结点的链表

来源:互联网 发布:ios屏幕录像软件 编辑:程序博客网 时间:2024/05/21 09:47
先扩展一下:如何反转带头结点的链表:#include<iostream>using namespace std;typedef struct LinkNode{int a;struct LinkNode *next;}LinkNode;void CreateLink(LinkNode *&C,int R[],int n)//创建链表{LinkNode *s,*r;int i=0;C=new LinkNode;C->next=NULL;r=C;for(i=0;i<n;i++){s=new LinkNode;s->a=R[i];r->next=s;r=s;}r->next=NULL;}void PrintLink(LinkNode *C){LinkNode *r=C->next;while(r){cout<<r->a<<"   ";;r=r->next;}cout<<endl;}void Reverse(LinkNode *&C)//反转链表{if(C==NULL)return;LinkNode *pre,*cur,*ne;////////下面代码段是用来解决头结点的问题的pre=C;cur=C->next;ne=cur->next;cur->next=NULL;pre=cur;cur=ne;//////////////////////////////////////////////////////while(cur){ne=cur->next;cur->next=pre;pre=cur;cur=ne;}C->next=pre;}int main(){int R[]={1,2,3};LinkNode *C;CreateLink(C,R,sizeof(R)/4);PrintLink(C);Reverse(C);PrintLink(C);return 0;}

0 0
原创粉丝点击