栈:一种线性表,特点是后进先出。因为是顺序表,所以可以用顺序表、链表实现。
->顺序栈:顺序表实现的栈
->链栈:单链表实现的栈,入栈=单链表的头插法,出栈=单链表依次删除表头后的元素。因为是单链表实现,所以也分为有头结点的单链表实现的链栈、无头结点的单链表实现的链栈
注意:
初始化栈时如果将栈顶指针(s.top)设为-1,那么push(stack &S,int x)时是先s.top++; 再s.top = x;出栈是先x = s.top;再s.top --;
初始化栈时如果将栈顶指针(s.top)设为0,那么push(stack &S,int x)时是先s.top = x; 再s.top++;出栈是先s.top --;再x = s.top;
对于顺序栈,因为顺序表长度有限最大为maxsize,所以入栈时要判断栈满:s.top == maxsize -1;出栈时要判断栈空:s.top ==-1;
代码实现略:实现和顺序表、单链表基本操作一样
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步