单链表的倒置【总结】
思想为:head指针不断后移,指针反向即可,代码为:
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}node,*LinkList;
void creat(LinkList &L)
{
node *p,*q;
L=(LinkList)malloc(sizeof(node));
if (L==NULL)
{
exit(0);
}
L->next=NULL;
L->data=0;
p=L;
for(int i=5;i>0;i--)
{
q=(LinkList)malloc(sizeof(node));
printf("Input :");
scanf("%d",&(q->data));
q->next=NULL;
p->next=q;
p=q;
}
}
void ListReverse(LinkList &L)
{
node * head=L;
if(head!=NULL&&head->next!=NULL)
{
node *p=head;
node *q=head->next;
p->next=NULL;
while(q->next!=NULL)
{
head=q->next;
q->next=p;
p=q;
q=head;
}
head->next=p;
}
}
void main()
{
LinkList L;
//初始化
creat(L);
//倒置
ListReverse(L);
//遍历显示
LinkList p;
p=L->next;
while(p->next!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("%d",p->data);
}