谭浩强课本上的一个原题,有些疑问:
谭浩强课本上的一个原题,有些疑问:struct student *insert (struct student *head ,struct student *stu)
{struct student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL){head=p0;p0->next=NULL;}
else
{while((p0->num>p1->num)&&(p1->next!=NULL))
{p2=p1;p1=p1->next;}
if(p0->num<=p1->num)
{if(head==p1)head=p0;
/*插到第一个结点前,使p0作为头结点,但没指明p0下一个指向谁,这样写也对吗?*/
/*我觉得应该加上p0->next=p1这一句?*/
else p2->next=p0;
p0->next=p1;}
{p1->next=p0;
p0->next=NULL;}}
n=n+1;
return head;
}
----------------解决方案--------------------------------------------------------
以下是引用yqiong在2007-8-13 20:05:30的发言:
谭浩强课本上的一个原题,有些疑问:
struct student *insert (struct student *head ,struct student *stu)
{struct student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL){head=p0;p0->next=NULL;}
else
{while((p0->num>p1->num)&&(p1->next!=NULL))
{p2=p1;p1=p1->next;}
if(p0->num<=p1->num)
{if(head==p1)head=p0;
/*插到第一个结点前,使p0作为头结点,但没指明p0下一个指向谁,这样写也对吗?*/
/*我觉得应该加上p0->next=p1这一句?*/
else p2->next=p0;
p0->next=p1;}
{p1->next=p0;
p0->next=NULL;}}
n=n+1;
return head;
}
谭浩强课本上的一个原题,有些疑问:
struct student *insert (struct student *head ,struct student *stu)
{struct student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL){head=p0;p0->next=NULL;}
else
{while((p0->num>p1->num)&&(p1->next!=NULL))
{p2=p1;p1=p1->next;}
if(p0->num<=p1->num)
{if(head==p1)head=p0;
/*插到第一个结点前,使p0作为头结点,但没指明p0下一个指向谁,这样写也对吗?*/
/*我觉得应该加上p0->next=p1这一句?*/
else p2->next=p0;
p0->next=p1;}
{p1->next=p0;
p0->next=NULL;}}
n=n+1;
return head;
}
----------------解决方案--------------------------------------------------------
回复:(maoguoqing)以下是引用yqiong在2007-8-13 20...
{if(head==p1){head=p0;p0->next=p1;}else {p2->next=p0;p0->next=p1;}
知道了,谢谢,加个{}就要写了
----------------解决方案--------------------------------------------------------
潭老先生的书上经常有细节的错误.不过这也有可能是编译系统不同造成的!
----------------解决方案--------------------------------------------------------
哈哈 好问题啊 是第二版的吧 我刚才也看到这里,有4行在翻过去的一页 不太好看!!
也在迷糊中!原来有错误!**str 1 []
----------------解决方案--------------------------------------------------------