反向输出链表,但总出错,已知肯定是fan()这个函数有错,但不知道错在哪?
#include<stdio.h>
#include<stdlib.h>
#define len sizeof(d)
typedef struct s
{
int a;
struct s *next;
}d;
void main()
{
d *creat();
void print(d *p);
d *fan(d *head);
d *head=0,*h=0;
head=creat();
print(head);
h=fan(head);
print(h);
}
d *creat()
{
int n=0;
d *head=0,*p=0,*q=0;
p=q=(d *)malloc(len);
printf(“input\n”);
scanf(“%d”,&p->a);
while(p->a!=0)
{
n++;
if(n==1)
head=p;
else
q->next=p;
q=p;
p=(d *)malloc(len);
printf(“input\n”);
scanf(“%d”,&p->a);
}
q->next=0;
return head;
}
void print(d *p)
{
do
{
printf(“%d”,p->a);
p=p->next;
}while(p!=0);
}
d *fan(d *head)
{
d *p=0,*q=0,*m=0;
int n=0;
p=q=head;
p=p->next;
while(p!=0)
{
n++;
m=p->next;
p->next=q;
if(n==1)
q->next=0;
q=p;
p=m;
}
return p;
}
>> 本文固定链接: http://www.vcgood.com/archives/2372