链表
struct ListNode{
int val;
ListNode *next; //前驱指针
ListNode *pre; //后继指针
};
LeetCode:
(206)反转链表
(141)环形链表
栈
//栈
#include <stack>
stack<int> a
//压入栈顶
a.push();
//栈顶弹出
a.pop();
//返回栈顶
a.top();
LeetCode:
(20)有效的括号
(232)用栈实现队列
单端队列
//单端队列
#include <queue>
queue<int> a
//队尾压入
a.push();
//队头弹出
a.pop();
//返回队头值
a.front();
//返回队尾值
a.back();
LeetCode:
(225)用队列实现栈
双端队列
//双端队列
#include <deque>
deque<int> a
//队尾压入
a.push_back();
//队头压入
a.push_front();
//队尾弹出
a.pop_back();
//队头弹出
a.pop_front();
//返回队尾值
a.back();
//返回队头值
a.front();
LeetCode:
(293)滑动窗口最大值
优先队列
//优先队列
#include<queue>
//降序队列,大顶堆,队头最小(默认)
priority_queue<int,vector<int>,less<int>>;
//升序队列,小顶堆,队头最大
priority_queue<int,vector<int>,greater<int>>;
//默认缺省用法(大顶堆)
priority_queue<int> a;
//队头压入
a.push();
//队尾弹出
a.pop();
//返回队头值
a.top();
LeetCode:
(703)数据流中的第k大元素
二叉树
struct TreeNode{
int val;
TreeNode *left; //左子树指针
TreeNode *right; //右子树指针
};
LeetCode: