读书人

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

发布时间: 2013-08-11 22:22:29 作者: rapoo

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


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都改变了。

读书人网 >C语言

热点推荐