【菜鸟】关于栈的一个很简单的问题!!

来源:百度知道 编辑:UC知道 时间:2024/06/15 21:32:34
为什么题目要求:若栈不空,则用e返回S的栈顶元素时,用的表达式为e=*(S.top-1);而题目是:若栈不空,则删除S的栈顶元素,用e返回其值时,表达式却是e=*--S.top呢?e=*(S.top-1)和e=*--S.top的本质区别在哪?麻烦高手指教!!
如果意思都一样,那不是删除栈顶元素和不删除都一样了?

2个题目是一样的要求,2个表达式的意思也是一样的,都是栈顶减1后返回现在的栈顶元素,除非TOP指向栈顶元素的下一个地址,也就是为空的时候才这样用。
一般情况下应该先返回栈顶元素,top在减1,与这2个表达式相反。
=================================================================
这2个表达式的的意思都是返回top-1地址里的元素,这里的删除指的不是从内存中删除,而是从栈中删除,地址减1,那么旧的栈顶元素已经不在栈中,相当于从栈中删除。
栈的特点是后进先出,所以即使题目没说要删除栈顶元素,出栈的同时也会默认从栈中删除了旧的栈顶元素,如果有特殊要求只引用栈顶元素而不出栈的话,就只取栈顶元素,而top地址不减1就可以了。
其实按照字面意思你的2个表达式应该分别改成:e=*S.top;和e=*S.top--;

第二个--s。top
你可以看s.top=s.top-1