c语言数据结构栈顶数据的删除

img


这个是栈顶数据的出栈,用ps->top--,ps是传的结构体参数指针,

  1. 这里的自减为什么不是先top再自减呢,

该回答引用ChatGPT4与博主@晓码自在合作编写:

这里使用ps->top--来实现栈顶数据的出栈,原因是:

  1. ps是一个结构体指针,指向栈结构体。ps->top表示栈顶指针,指向栈顶元素。
  2. --top的意思是先取top的值,然后top减1。如果写成top--,先减1再取top的值,那么取到的就是减1后的top值,不正确。
  3. 出栈操作就是减少栈顶指针,所以应该先获取当前栈顶指针位置,然后减1。

所以ps->top--是正确的写法,实现先获取栈顶元素,然后栈顶指针减1,完成出栈操作。

如果写成ps->top--,等价于:

c
int top = ps->top;
ps->top = top - 1;

先获取栈顶指针top的值,然后减1赋值给ps->top。

而ps->--top相当于:

c
ps->top -= 1; 
int top = ps->top;  // 此时的top已经减1

这时获取的top值已经是减1后的值,不正确。

所以ps->top--是正确的出栈写法,符合先获取栈顶元素,然后栈顶指针减1的逻辑。

啥叫先top再自减,你能翻译一下自己在说什么吗
top是个变量,又不是方法,怎么叫先top呢

初始化时,top等于0,是栈顶嗯下一个数据,就是说当他出栈的时候,是栈顶自减,但是第一次不是先赋值嘛,

ps->top 是一个整体,表示结构体的 top 成员变量,ps->top-- ====> top--