【做题笔记】LeetCode中栈标签题目的常用操作

最近在LeetCode上做与栈有关的题目, C++的基本操作记不住了, 在这里记录一下

栈是先进后出(FILO)的数据结构, 以下是栈的基本操作:

#include 
stack<int> s;
s.empty();              //如果栈为空返回true,否则返回false
s.size();               //返回栈中元素的个数
s.push(6);             //在栈顶压入元素, 其值为6
s.pop();               //弹出栈顶元素并删除该元素
s.top();               //返回栈顶元素, 但不删除

队列
队列是先进先出(FIFO)的数据结构, 以下是队列的基本操作:

#include 
queue<int> q;
q.empty();               //如果队列为空返回true,否则返回false
q.size();                //返回队列中元素的个数
q.push(6);               //在队尾压入新元素, 其值为6
q.pop();                 //删除队列首元素但不返回其值
q.front();               //返回队首元素的值,但不删除该元素
q.back();                //返回队列尾元素的值,但不删除该元素

与栈和队列类似的有push, pop操作的还有vector和string

向量
vector可以像数组一样的进行访问, 十分方便, LeetCode中与数组有关的问题都采用vector进行存储

#include
vector<int> v,b;
v.empty();                  //如果向量为空返回true,否则返回false
v.size();                  //返回向量中元素的个数
v.push_back(6);            //在v的最后一个向量后插入一个元素, 其值为6
v.pop_back();              //删除向量v的最后一个元素
v.front();                 //返回v的第一个元素
v.back();                  //返回v的最后一个元素
v.clear();                 //清空v中的元素
v.swap(b);                 //b为向量,将v中的元素和b中的元素整体交换

字符串
有些题目解决的原理是用栈对字符串进行操作, 这时就可以直接用字符串的一些操作来替代栈, 操作与栈类似, 节约时间与空间

string s;
s.size(); s.length();     //返回s的长度
s.push_back();            //向s末尾增加字符
s.pop_back();             //删除s末尾的字符
s.back();                 //返回s末尾的字符

你可能感兴趣的:(LeetCode,队列,字符串,数据结构,leetcode,栈)