反转栈算法,烦劳大家看看哪错了
反转栈算法,麻烦大家看看哪错了!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;
}
[解决办法]cur保存的是地址,NewHead = cur意味着这两者指向相同的节点。
NewHead-〉next = pre;这句话立刻将Cur和NewHead的next都改变了。