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

反转栈算法,烦劳大家看看哪错了

2013-08-11 
反转栈算法,麻烦大家看看哪错了!Stack* ReserveStack(Stack *s){Stack *Cur s-nextStack *NewHead N

反转栈算法,麻烦大家看看哪错了!


Stack* ReserveStack(Stack *s)
{
Stack *Cur = s->next;
Stack *NewHead = NULL;
    Stack *pre = NULL;

while(Cur->next!=NULL)
    {
    NewHead = Cur;
        NewHead ->next = pre;
        pre = NewHead;
        Cur = Cur->next;
}
return NewHead;
}


大家看看我传了个栈顶头节点,然后我想把这个栈反转,可是执行一轮下来Cur->next就为空了,然后就出现错误了,我不知道错哪了,不知道是不是地址互相覆盖了! C 算法
[解决办法]
    while(Cur->next!=NULL)
    {
        NewHead = Cur;
        Cur = Cur->next; 
        NewHead ->next = pre;  
        pre = NewHead; 
    }
[解决办法]
引用:
Quote: 引用:

    while(Cur->next!=NULL)
    {
        NewHead = Cur;
        Cur = Cur->next; 
        NewHead ->next = pre;  
        pre = NewHead; 
    }

嗯 输出对了,确实按你这个顺序就对了,那是为什么啊,我有点不明白,Cur和NewHead不是独立的变量吗,为什么会有影响!

cur保存的是地址,NewHead = cur意味着这两者指向相同的节点。
NewHead-〉next = pre;这句话立刻将Cur和NewHead的next都改变了。

热点排行