21xrx.com
2024-11-24 21:13:31 Sunday
登录
文章检索 我的文章 写文章
C++中如何定义栈
2023-06-27 07:55:02 深夜i     --     --
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`类,并按照上面的方式调用另外的函数来执行栈的相关操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复