# include <stdio.h>
# include <stdlib.h>
struct dian
{ int d;
struct dian *next;} ;/*定义结构体*/
struct dian *nizhuan(struct dian *head)
{struct dian *p1,*p2,*p3;
if(head==0){printf("there is nothing\n"); return;}/*特殊情况..当链表为空*/
else if (head->next==0) return(head); /*特殊情况 当链表中只有一个结点*/
else {p1=head; p2=p3=head->next;}/* 给予位置 p1,p2,p3*/
while(p3!=0)
{p3=p2->next; p2->next=p1; p1=p2; p2=p3;}
head->next =0;
head=p1;/*这我实在说不明白..大家画个图就明白了*/
return(head);}
main()
{ struct dian *head,*q1,*q2;
int x;
head=0;
scanf("%d",&x);
while(x!=0)
{q1=(struct dian *)malloc(sizeof(struct dian));/*主函数没有问题..我调试过了*/
q1->d=x;q1->next=0;
if (head==0) head=q2=q1;
else {q2->next=q1; q2=q2->next; }
scanf("%d",&x);}
nizhuan(head);
q2=head;
while(q2!=0)
{printf("%d",q2->d);
q2=q2->next;}
getch();
}
我感觉好象运行不到nizhuan 函数中..while语句以后..不知道什么问题..拜托大家了!
[此贴子已经被作者于2006-3-24 22:32:34编辑过]