21xrx.com
2024-11-08 22:21:54 Friday
登录
文章检索 我的文章 写文章
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;

}

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

  
  

评论区

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