21xrx.com
2025-06-13 00:40:44 Friday
文章检索 我的文章 写文章
C++ 中如何创建栈
2023-07-14 20:26:55 深夜i     15     0
C++ 创建

在C++中,我们可以使用STL提供的容器类模板来创建栈,也可以自己手动实现栈。下面将分别介绍两种方法。

一、使用STL容器类模板创建栈

STL提供了一个stack容器类模板,可以用来创建栈。使用该容器类模板需要包含头文件 。下面是一个使用stack创建栈的简单示例。

#include <stack>
#include <iostream>
using namespace std;
int main()
{
  stack<int> s; // 创建一个int类型的栈
  s.push(1); // 向栈中添加元素
  s.push(2);
  s.push(3);
  cout << s.top() << endl; // 输出栈顶元素
  s.pop(); // 删除栈顶元素
  cout << s.top() << endl; // 再次输出栈顶元素
  return 0;
}

二、手动实现栈

手动实现栈可以加深对栈的理解,也可以在需要实现特定功能时进行自定义操作。下面是一个简单的手动实现栈的示例。

#include <iostream>
using namespace std;
const int MAX_SIZE = 100; // 栈的最大容量
class MyStack
{
private:
  int top; // 栈顶指针
  int data[MAX_SIZE]; // 栈中的元素
public:
  MyStack()
  
    top = -1; // 初始化栈顶指针为-1
  
  bool isEmpty()
  表示栈为空
  
  bool isFull()
  表示栈已满
  
  void push(int value)
  {
    if(isFull()) // 如果栈已满,无法再添加元素
    
      cout << "stack overflow" << endl;
      return;
    
    data[++top] = value; // 将元素添加到栈中
  }
  void pop()
  {
    if(isEmpty()) // 如果栈为空,无法删除元素
    
      cout << "stack underflow" << endl;
      return;
    
    top--; // 栈顶指针向下移动一个位置
  }
  int getTop()
  {
    if(isEmpty()) // 如果栈为空,无法返回栈顶元素
    
      cout << "stack empty" << endl;
      return -1;
    
    return data[top]; // 返回栈顶元素
  }
};
int main()
{
  MyStack s; // 创建一个栈
  s.push(1); // 向栈中添加元素
  s.push(2);
  s.push(3);
  cout << s.getTop() << endl; // 输出栈顶元素
  s.pop(); // 删除栈顶元素
  cout << s.getTop() << endl; // 再次输出栈顶元素
  return 0;
}

总结

以上是两种创建栈的方法,使用STL容器类模板可以快速方便地创建栈,手动实现栈可以帮助加深对栈的理解,在需要自定义操作时进行实现。无论哪种方法,都可以满足不同的需求,需要根据具体情况进行选择。

  
  

评论区