文章目录提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 引言
- 本章概括
- 1.2.1 stack
- 1.介绍
- 2.常见操作
- 4.代码讲解
- 1.2.2例题
引言
本节我们一起来学习c++数据结构中的栈(stack),下面是我的学习笔记,供大家参考,如果觉得总结的不错的话,可以收藏起来方便今后复习。
本章概括| 章节 | 内容 |
|---|---|
| 1.1 | 容器 vector |
| 1.2 | 栈 stack |
| 1.3 | 队列 queue |
| 1.4 | 链表 list |
| 1.5 | set |
| 1.6 | map |
- 栈是基本的数据结构之一,特点是“先进后出”。例如乘坐电梯时,先进电梯的最后出来;一盒泡腾片,最先放进盒子的药片位于最底层,最后被拿出来。
还可以定义多维数组:
vector< int > a[MAXN];
| 功能 | 例子 | 说明 |
|---|---|---|
| 定义 | stack< int > q | 定义一个类型为int的q的栈 |
| 元素个数 | int size = q.size(); | 元素个数 |
| 是否为空 | bool isEmpty = q.empty(); | 判断是否为空 |
| 顶部插入 | q.push(i); | 在顶部插入i |
| 删除顶部 | a.pop(); | 删除顶部元素 |
| 顶部元素 | q.top(); | 顶部元素 |
#include#include using namespace std; int main(){ stack q; for(int i = 0;i < 7;i++) { q.push(i);//将0到6压进去 } cout< q.pop();//将栈顶弹出 } cout< 1.2.2例题
problem:
伊格那丢喜欢倒过来写。给定伊格那丢写的一行文字,你应该颠倒所有的单词,然后输出它们。input
输入包含几个测试用例。输入的第一行是一个整数T,也就是测试用例的数量。下面是T个测试用例。
每个测试用例都包含一个包含几个单词的行。一行最多有1000个字符。3
olleh !dlrow
m’I morf .udh
I ekil .mcaoutput
对于每个测试用例,您应该输出所处理的文本。hello world!
I’m from hdu.
I like acm.#includeusing namespace std; int main(){ int n; char ch; cin>>n; getchar(); while(n--) { stack a; while(1) { ch = getchar();//一次读一个字符 if(ch == ' '||ch == 'n'||ch == EOF) { while(!a.empty()) { putchar(a.top());//输出栈顶 a.pop();//清除栈顶 } if(ch == 'n'||ch == EOF)break; cout<<" "; } else a.push(ch);//入栈 } cout<
下一节我们将对栈queue进行详解,请大家持续关注



