首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

还是链表的倒置有关问题

2012-02-09 
还是链表的倒置问题1写出程序把一个链表中的接点顺序倒排typedefstructlinknode{intdatastructlinknode*n

还是链表的倒置问题
1   写出程序把一个链表中的接点顺序倒排
typedef   struct   linknode
{
int   data;
struct   linknode   *next;
}node;
//将一个链表逆置
node   *reverse(node   *head)
{
node   *p,*q,*r;
p=head;
q=p-> next;
while(q!=NULL)
{
r=q-> next;
q-> next=p;
p=q;
q=r;
}

head-> next=NULL;
head=p;
return   head;
}
看了一个倒置连表输出的贴,这个回贴被主流所认同.
这个算法中返回的head真的是原链表末接点吗??个人按照此算法调试时得不到正确答案,偶觉得,此处的head返回的是一个NULL;主要由while   语句中的r=q-> next;       q=r;这两条语句所决定;
还望各位达人能发表一下看法;偶理解错了,还是他算法错了,(偶坚持自己观点)或直接贴正确算法代码更佳!谢谢

[解决办法]
还应还是你理解错了。

上面的代码非常清楚, 返回的不可能是NULL,
原因:

经过循环之后p指向原本的最后一个节点。
head-> next=NULL; 将原本的头节点变成尾节点。
head=p; 注意这里对head进行了赋值,将其指向了p(现在的尾节点)
然后 return head 没有错误的。

热点排行
Bad Request.