21xrx.com
2025-03-27 18:57:56 Thursday
文章检索 我的文章 写文章
C++中使用vector实现栈数据结构
2023-06-25 14:56:09 深夜i     --     --
C++ vector 数据结构

栈是一种常见的数据结构,常用于程序中进行内存分配、函数调用等操作。在C++中,可以使用vector实现栈数据结构。vector是一个动态数组,可以根据需要动态增加或减少元素,非常适合实现栈。

首先,我们需要包含vector头文件:

#include <vector>

然后,定义一个vector,作为栈的存储容器:

std::vector<int> stack;

这里以int类型为例,实际上可以使用任何类型。

接着,我们可以定义一些函数对栈进行操作。比如,入栈操作push:

void push(int element) {
 stack.push_back(element);
}

这里使用vector的push_back函数,在数组末尾添加一个元素。

出栈操作pop:

void pop() {
 if (stack.empty())
  std::cout << "Stack is empty." << std::endl;
  else {
  stack.pop_back();
 }
}

这里使用了vector的pop_back函数,删除最后一个元素。

获取栈顶元素top:

int top() {
 return stack.empty() ? -1 : stack.back();
}

这里使用了vector的back函数,返回最后一个元素。

判断栈是否为空empty:

bool empty() {
 return stack.empty();
}

这里使用了vector自带的empty函数,如果vector为空则返回true,否则返回false。

至此我们实现了一个基本的栈,完整代码如下:

#include <vector>
#include <iostream>
class Stack {
public:
 void push(int element) {
  stack.push_back(element);
 }
 void pop() {
  if (stack.empty())
   std::cout << "Stack is empty." << std::endl;
   else {
   stack.pop_back();
  }
 }
 int top() {
  return stack.empty() ? -1 : stack.back();
 }
 bool empty() {
  return stack.empty();
 }
private:
 std::vector<int> stack;
};
int main() {
 Stack s;
 s.push(1);
 s.push(2);
 s.push(3);
 std::cout << s.top() << std::endl;
 s.pop();
 std::cout << s.top() << std::endl;
 s.pop();
 std::cout << s.top() << std::endl;
 s.pop();
 std::cout << s.empty() << std::endl;
 return 0;
}

以上代码实现了一个基本的栈,可以添加、删除、获取栈顶元素、判断是否为空。当然,还可以添加其他的操作,比如求栈的大小等。

  
  

评论区