先扩展一下:如何反转带头结点的链表:
#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;
}
反转带头结点的链表
最新推荐文章于 2023-06-01 17:16:23 发布