C++实现栈结构
2026/7/19 9:45:49 网站建设 项目流程

栈是一种动态集合,是比较常用的一种数据结构,它的特点就是:后进先出。就好像一个只有一个门的房子,先进去的人在里面,后进去的人在外面,里面的人想出来,必须得让外面的人先出来才行。

如图所示,我们可以用一个数组S[1...n]来实现一个最多可容纳n个元素的栈。这个数组有两个属性,一个是maxSize,表示最大容纳量,一个是top,表示最外面的元素的位置,也是最先出来的元素,叫栈顶元素。

我们往栈中加入4个元素,分别是 15 、6 、2 、9,因为数组是从0开始的,因此栈顶元素是S[3],S.top=3,这个过程叫入栈。

假如我们再往栈中加入两个元素,那么top就变成了5。

那么按照后进先出的原则,我们获取栈的第一个元素就是5,如果5出栈了,top变成了4,但是5还留在数组中,只是栈顶指针移动了,等到下一个元素填充到S[5]时才会被抹去。

这就是栈的基本操作,需要注意的是maxSize是一开始就固定的,不会因为入栈和出栈受到影响。下面我们用C++的类封装一个栈。

#pragma once #include <iostream> using namespace std; class stack { public: stack(int maxSize) :maxSize(maxSize) //初始化参数 { top = -1; dataMemory = new int[maxSize]; } void push(int data) //入栈 { if (top + 1 == maxSize) { printf("栈满,无法入栈!\n"); return; } dataMemory[++top] = data; } int pop()//出栈 { if (top == -1) { printf("栈空,无法出栈!\n"); return -99999; } return dataMemory[top--]; } int getTop() //获取栈顶标记位置 { return top; } void print() //打印栈中元素,方便测试 { for (int i = 0; i <= top; i++) { cout << dataMemory[i] << '\t'; } cout << endl; } protected: int maxSize; int top; int* dataMemory; };

测试结果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询