元素进栈时:先栈顶指针加一,再送值入栈;元素出栈时:先取出栈顶元素,再栈顶指针减一;2.2 顺序栈的基本运算2.2.1 初始化栈实现思路1. 将栈顶指针top置为1 实现代码//初始化顺在我的Clion里就会Exit Code 11 Debug后发现x,topVal 都是NULL,我推断就是由于没有malloc()造成的错误。所以建立指针后先malloc()应该没有问题吧,防止出错。
╯▽╰ 进栈操作:栈不满时,栈顶指针先加1,再送值到栈顶元素。出栈操作:栈非空时,先取栈顶元素值,再将栈顶指针减1。栈空条件:S.top==-1;栈满条件:S.top==MaxSize-1;栈长:S.top+1 由于初始设置S.top=-1,故栈顶指针先加一,再入栈。/入栈voidPush(SqStack&S,intx){if(S.top==MaxSize-1){cout<<"栈满"< 入栈操作需要先将top指针自增,然后新的top位置的值为入栈的值,先加后用,应该是s.++top=e;出栈因为你的栈底是无限的,你压入一个元素,新的元素就取代先前的栈顶元素占据栈顶的位置,那么你先前的指向栈顶元素的指针这个时候就该修改让它指向这个新的栈顶元素 1栈顶指针先加1再赋值那么栈顶指针所指的地方是最后入栈的元素2若先赋值栈顶指针再加1则指针指向的位置是在最后入栈元素的后面1位指向的地方为空值数据结构——共享栈的栈满队列的入队是放数据进来后再自加,而且刚开始头尾指针都指向同一位置,判断是否队列满的时候用if(t.tail=队列长度)而不是用if(t.tail+1=队列长度),这是因为先插 因为规定了top==-1 表示栈空,所以元素进栈操作必须是先移动指针,再进入元素,因为数组下标不存在-1。但有可能初始规定top=0,那么就要元素先入栈,再将栈顶指针加一。其实本质都是根据常规的习惯,栈指针的初始值是-1,这样是没有指向任何空间的,因此开始赋值的时候都是+1赋值,先指向一片空的空间,然后赋值,此时指针指向的是栈顶元素。如果