#include <stdio.h>
#include <malloc.h>
struct list
{
int data;
struct list *next;
};
list *reserve1(list *head)
{
list *p1,*p2,*p3;
if(head==NULL || head->next==NULL)
{
return head;
}
p1 = head;
p2 = head->next;
while(p2!=NULL)
{
p3 = p2->next;
p2->next = p1;
p1 =p2;
p2 =p3;
}
head ->next= NULL;
head = p1;
return head;
}
list *reserve2(list *head,list *pre)
{
list *p=head->next;
head->next=pre;
// printf("*\n");
if(p==NULL)
{
return head;
}
else
{
return reserve2(p,head);
}
}
int main()
{
list *a[5];
for(int i=0;i<5;i++)
{
a[i] = new list;
a[i]->data = i;
a[i]->next=NULL;
}
a[0]->next = a[1];
a[1]->next = a[2];
a[2]->next = a[3];
a[3]->next = a[4];
list *root;
root = a[0];
while(root!=NULL)
{
printf("%d->",root->data);
root = root->next;
}
printf("\n");
root = a[0];
root=reserve2(root,NULL);
while(root!=NULL)
{
printf("%d->",root->data);
root = root->next;
}
/*
root = a[0];
root=reserve1(root);
while(root!=NULL)
{
printf("%d->",root->data);
root = root->next;
}
*/
//for(;;);
return 0;
}
单链表反转
最新推荐文章于 2016-06-26 11:07:29 发布