21xrx.com
2025-03-27 15:09:05 Thursday
文章检索 我的文章 写文章
C++顺序栈类实现代码
2023-06-24 01:04:25 深夜i     --     --
C++ 顺序栈 实现 代码

在数据结构中,栈是一种基本的数据结构,它的特点是后进先出。C++中可以使用数组来实现栈,这种实现方式叫做顺序栈。下面是一份C++顺序栈类实现代码,可以供大家参考。

首先,我们需要定义一个栈类,代码如下:

class Stack {
  private:
    int* values; //定义一个指向栈元素的指针
    int top;   //栈顶元素位置
    int maxSize; //栈的容量
  public:
    Stack(int size);  //构造函数
    ~Stack();     //析构函数
    bool isEmpty();  //判断栈是否为空
    bool isFull();   //判断栈是否已满
    bool push(int x); //在栈顶插入元素
    int pop();     //弹出栈顶元素
};

然后,我们需要在类的外部实现这些函数,代码如下:

//构造函数
Stack::Stack(int size) {
  maxSize = size;      //设置栈的容量
  values = new int[maxSize]; //分配堆内存
  top = -1;         //初始化栈顶位置
}
//析构函数
Stack::~Stack() {
  delete[] values; //释放堆内存
}
//判断栈是否为空
bool Stack::isEmpty() {
  return top == -1;
}
//判断栈是否已满
bool Stack::isFull() {
  return top == maxSize - 1;
}
//在栈顶插入元素
bool Stack::push(int x) {
  if (isFull()) return false; //如果栈已满,插入失败
  values[++top] = x;     //栈顶指针上移一位,插入元素
  return true;
}
//弹出栈顶元素
int Stack::pop() {
  if (isEmpty()) return -1; //如果栈为空,弹出失败
  return values[top--];   //栈顶指针下移一位,弹出元素
}

最后,我们可以在主函数中使用这个顺序栈,代码如下:

int main() {
  Stack s(10); //创建一个容量为10的栈
  for (int i = 0; i < 10; ++i) {
    s.push(i); //依次插入0~9
  }
  while (!s.isEmpty()) {
    cout << s.pop() << " "; //依次弹出所有元素
  }
  cout << endl;
  return 0;
}

上面的代码中,我们创建了一个容量为10的栈,并依次插入了0~9这十个元素。然后使用while循环依次弹出所有元素,并将它们输出到屏幕上。

总结:

通过这篇文章,我们学习了C++中如何实现一个顺序栈类。顺序栈是栈的一种实现方式,通过数组来存储栈中的元素。需要注意的是,在使用栈的过程中,需要时刻判断栈是否为空或已满,防止数组越界或栈溢出。

  
  

评论区