问题描述
入栈:StackNodepush(StackNodeS){S.next=top;top=S;returntop;}出栈:StackNodepop(){StackNodesn=top;top=top.next;returnsn;}其中的top=S和sn=top该怎么理解,虽然知道是指针的指向,但能不能写成S=top和top=sn?求各位大神指教
解决方案
解决方案二:
入栈的时候是在头部加入,top就是指向头部的句柄,用当前加入的对象句柄替换原来的top指向的对象句柄。出栈就反过来。看看数据结构的基础,这个理解起来很简单的。
解决方案三:
要先理解栈是怎样运行的,先进后出!
解决方案四:
引用1楼rumlee的回复:
入栈的时候是在头部加入,top就是指向头部的句柄,用当前加入的对象句柄替换原来的top指向的对象句柄。出栈就反过来。看看数据结构的基础,这个理解起来很简单的。
谢谢指导,但是能不能写成S=top和top=sn?
解决方案五:
解决方案六:
解决方案七:
引用3楼u014229748的回复:
Quote: 引用1楼rumlee的回复:
入栈的时候是在头部加入,top就是指向头部的句柄,用当前加入的对象句柄替换原来的top指向的对象句柄。出栈就反过来。看看数据结构的基础,这个理解起来很简单的。谢谢指导,但是能不能写成S=top和top=sn?
不可以
解决方案八:
引用楼主u014229748的回复:
入栈:StackNodepush(StackNodeS){S.next=top;top=S;returntop;}出栈:StackNodepop(){StackNodesn=top;top=top.next;returnsn;}其中的top=S和sn=top该怎么理解,虽然知道是指针的指向,但能不能写成S=top和top=sn?求各位大神指教
S.next=top是入栈的过程,如果直接写成S=top,只是赋值而已。
解决方案九:
S.next=top;是将S放到top的前面,然后top=s,是将top指向s,方便以后固定的去找top,因为top是全局的,这两句顺序不能颠倒top=sn,sn哪里来的,这句编译都过不了
解决方案十:
8楼讲的有道理,学习了
解决方案十一:
解决方案十二:
解决方案十三:
解决方案十四:
1楼和8楼都是正解。。。。
时间: 2024-11-08 18:52:28