#include<iostream>
using namespace std;
typedef struct node{
int data;
struct node *next;
}Lnode;
Lnode*create()
{
Lnode*h,*p,*t;
h=(Lnode*)malloc(sizeof(Lnode));
h->next=NULL;
int n;
t=h;
while(cin>>n&&n)
{
p=(Lnode*)malloc(sizeof(Lnode));
p->data=n;
p->next=NULL;
t->next=p;
t=p;
}
return h;
}
void putlist(Lnode*h)
{
Lnode*p;
p=h->next;
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
}
int inverse(Lnode*h)
{
Lnode*p,*q,*r;
p=h->next;
if(p==NULL)return 0;
else if(p->next==NULL)return 0;
q=p;
p=p->next;
q->next=NULL;
while(p)
{
r=p->next;
p->next=q;//指针逆转
q=p;//顺序不能换
p=r;
}
h->next=q;
return 1;
}
int main()
{
Lnode*h;
h=create();
int c=inverse(h);
putlist(h);
return 0;
}
单链表的逆转
最新推荐文章于 2024-08-17 22:07:43 发布