C++实现栈结构
栈是一种动态集合是比较常用的一种数据结构它的特点就是后进先出。就好像一个只有一个门的房子先进去的人在里面后进去的人在外面里面的人想出来必须得让外面的人先出来才行。如图所示我们可以用一个数组S[1...n]来实现一个最多可容纳n个元素的栈。这个数组有两个属性一个是maxSize表示最大容纳量一个是top表示最外面的元素的位置也是最先出来的元素叫栈顶元素。我们往栈中加入4个元素分别是 15 、6 、2 、9因为数组是从0开始的因此栈顶元素是S[3]S.top3这个过程叫入栈。假如我们再往栈中加入两个元素那么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; };测试结果