2008
05-22

反向输出链表,但总出错,已知肯定是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;
}


留下一个回复