21xrx.com
2025-07-14 06:48:15 Monday
文章检索 我的文章 写文章
C++中如何定义栈
2023-06-27 07:55:02 深夜i     25     0
C++ 定义

在C++中,栈(Stack)是一种经常使用的数据结构,可以用于许多开发场景。栈可以理解为一种线性数据结构,它遵循先进后出的规则,即最后插入的元素最先被移除。

要在C++中定义一个栈,首先需要了解栈的结构和相关操作。栈可以用数组或链表实现,但这里我们将关注使用数组实现栈的方法。

定义栈的关键是定义栈的最大容量,因为栈的大小是固定的。假设我们希望定义一个大小为10的栈,可以使用以下代码:

const int MAX_SIZE = 10//定义栈的最大容量
class Stack {
private:
  int elements[MAX_SIZE]; //栈的底层使用数组实现
  int top; //顶部指针,用于记录栈顶元素的位置
public:
  Stack() 将栈顶指向数组第一个元素位置
    top = -1;
  
  void push(int element) { //将元素压栈
    if (top == MAX_SIZE - 1)  //判断栈是否已满
      std::cout << "The stack is full." << std::endl;
    
    else {
      top++; //栈顶指针向上移动一位
      elements[top] = element; //将元素入栈
    }
  }
  int pop() { //将元素弹出栈
    if (top == -1)  //判断栈是否为空
      std::cout << "The stack is empty." << std::endl;
      return -1;
    
    else {
      int element = elements[top]; //取出栈顶元素
      top--; //栈顶指针向下移动一位
      return element;
    }
  }
  int peek() { //获取栈顶元素,不弹出
    if (top == -1)  //判断栈是否为空
      std::cout << "The stack is empty." << std::endl;
      return -1;
    
    else {
      return elements[top]; //返回栈顶元素
    }
  }
  bool isEmpty()  //判断栈是否为空
    return top == -1;
  
  bool isFull()  //判断栈是否已满
    return top == MAX_SIZE - 1;
  
};

在上面的代码中,我们定义了一个`MAX_SIZE`常量,它表示栈的最大容量。然后,我们定义了一个名为`Stack`的类,其中包含了一些栈的基本操作。例如,`push()`用于将元素压栈,`pop()`用于将元素弹出栈,`peek()`用于获取栈顶元素而不弹出,`isEmpty()`用于判断栈是否为空,`isFull()`用于判断栈是否已满。

在`Stack`类的底层,我们使用`elements`数组来存储栈的元素。我们还定义了一个`top`变量来跟踪栈顶元素的位置。在栈顶为空时,默认将`top`设置为`-1`。

当我们使用`push()`函数将元素压入栈时,首先会检查栈是否已满。如果是,我们将输出一条错误信息。否则,我们将栈顶指针`top`向上移动一位,并将元素放入`elements`数组的相应位置。

当我们使用`pop()`函数将元素从栈中弹出时,首先会检查栈是否为空。如果是,我们将输出一条错误信息并返回`-1`。否则,我们将栈顶指针`top`向下移动一位,并从`elements`数组中取出相应的值。

`peek()`函数和`pop()`函数类似,但它不会弹出栈顶元素。相反,它只返回栈顶元素的值。

最后,我们还定义了`isEmpty()`和`isFull()`函数,用于判断栈是否为空或已满。

在使用栈时,我们可以使用上面定义的`Stack`类,并按照上面的方式调用另外的函数来执行栈的相关操作。

  
  

评论区