菜鸟。求指导。(双循环链表

C语言 码拜 8年前 (2017-04-24) 1710次浏览
求高手解答。第十行本人把s的值给t后,在第十二行改变s->prior,为什么t 的prior也会变,t 不是应该保存在第十行的s的诗句不变吗。

	void inversion(node *&L)
{
    node *s = L->prior,*t;
    node *M,*last;
    M = new node;
    last = M;
    while(s != L)
    {
        t = s;
        last->next = s;
        s->prior = last;
        last = s;
        M->prior = last;
        last->next = M;
        s = t-prior;
    }
    delete L;
    L = M;
}
解决方案

30

s没向后移,s和t指向同一个节点啊

10

你把s=t->prior;这句写在t=s;之后就是你要的效果了

40

原因是他们指向同一块内存,你通过一个指针改变这片内存内容,另一个指针获得的当然也是变化后的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明菜鸟。求指导。(双循环链表
喜欢 (0)
[1034331897@qq.com]
分享 (0)