20260322-初级班-栈与队列
已结束
IOI
开始于: 2026-3-22 8:00
4
小时
主持人:
36
栈与队列
栈(stack)是一种特殊的线性表,只能从一端进行插入或者删除操作。这一端被称为栈顶,另一端被称为栈底,栈的特点是后进先出(Last In First Out)
栈操作
stack<int> sta;//定义一个栈
sta.push(x);//向栈顶放入一个 x
cout<<sta.top();//查看栈顶
sta.pop();//丢出栈顶
cout<<sta.size();//查看栈的大小
cout<<sta.empty();//查看栈是否为空
//以上操作复杂度均为O(1)
使用数组模拟栈
int sta[1000],int top=0;
sta[++top]=x;//入栈
cout<<sta[top];//查看栈顶
z
top--;//出栈
cout<<top;//查看栈的大小
//以上操作复杂度均为O(1)
习题:
B.小鱼的数字
C.括号匹配问题
队列
queue
和栈不同,队列是只能从一端进入,从另一端出去的数据结构
队列操作
queue<int> que;//定义一个存储int类型的队列 名字叫 que
que.push(x);//在队列中加入一个数字
que.front();//返回队列最前面的数字
que.pop();//丢掉队列最前面的数字
que.size();//返回队列里的大小
que.empty();//返回布尔值,是否为空
//以上操作复杂度均为O(1)
除了只有一端能进入,一端能出去的队列,还有两端都能进出的队列
双端队列
deque
deque<int> dq;//定义
dq.push_back(x);//在队尾操作
dq.pop_back();
dq.push_front(x);//在队首操作
dq.pop_front();
dq.size();//查询队列大小
dq.empty();
//以上操作复杂度均为O(1)
习题
D.周末舞会
E.约瑟夫问题
优先队列
priority_queue
优先队列是一种特殊的队列,它的本质是一个大顶堆
priority_queue<int> que;
que.push(x);
que.top();
que.pop();
que.size();
习题
F.合并果子
- 状态
- 已结束
- 规则
- IOI
- 题目
- 7
- 开始于
- 2026-3-22 8:00
- 结束于
- 2026-3-22 12:00
- 持续时间
- 4 小时
- 主持人
- 参赛人数
- 36