|
楼主 |
发表于 2004-3-17 00:25
|
显示全部楼层
int islist_loop(list *head)
{
int flag;
list *lptr1,lptr2,lptr3;
if(head==NULL)
return -1;
if(head==head->next)
return 1;
lptr1=head->next;
lptr2=head;
head->next=NULL; //为何?
while(lptr1!=NULL){
lptr3=lptr1->next;
lptr1->next=lptr2; //不明......??
lptr2=lptr1;
lptr1=lptr3;
}
if(lptr2==head)
flag=1;
else
flag=0;
lptr1=lptr2->next; //此段代码对flag的值毫无影响,有何用?
lptr2->next=NULL;
while(lptr1!=NULL){
lptr3=lptr1->next;
lptr1->next=lptr2;
lptr2=lptr1;
lptr1=lptr3;
}
return flag;
}
你说反向?单向链表如何反向?注意不能改变链表结构......
你的过程.... 我好像看不懂的样子......能简单说下算法吗?细节不用考虑那么多...... |
|