21xrx.com
2024-11-05 20:29:11 Tuesday
登录
文章检索 我的文章 写文章
C++ 中如何创建栈
2023-07-14 20:26:55 深夜i     --     --
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容器类模板可以快速方便地创建栈,手动实现栈可以帮助加深对栈的理解,在需要自定义操作时进行实现。无论哪种方法,都可以满足不同的需求,需要根据具体情况进行选择。

  
  

评论区

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