随便写了一个,如下,这个要自己体会
#include<stdio.h>
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*LinkList;
int main()
{
LinkList head,p,q,f;//head 是头指针
head=new Lnode; //创建链表为1 2 3 4
head->data=1;head->next=0;
p=new Lnode;p->data=4;p->next=head->next;head->next=p;
p=new Lnode;p->data=3;p->next=head->next;head->next=p;
p=new Lnode;p->data=2;p->next=head->next;head->next=p;
p=head;//打印原始链表
while(p)
{
printf(\"%d \",p->data);
p=p->next;
}
printf(\"\\n\");
if(head->next)//逆转
{
p=head->next;q=head;q->next=0;
while(p)
{
f=p->next;
p->next=q;
q=p;
p=f;
}
head=q;
}
p=head;//打印逆转后的链表
while(p)
{
printf(\"%d \",p->data);
p=p->next;
}
printf(\"\\n\");
if(head->next)//再次逆转
{
p=head->next;q=head;q->next=0;
while(p)
{
f=p->next;
p->next=q;
q=p;
p=f;
}
head=q;
}
p=head;//打印再次逆转后的链表,和原始链表一样
while(p)
{
printf(\"%d \",p->data);
p=p->next;
}
printf(\"\\n\");
return 0;
} |