还是链表的倒置问题
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 没有错误的。