没有合适的资源?快使用搜索试试~ 我知道了~
C++ stack 和 queue 的笔记
需积分: 0 5 下载量 96 浏览量
2024-02-22
23:22:53
上传
评论 1
收藏 41KB DOCX 举报
温馨提示
试读
13页
C++ stack 和 queue 的笔记
资源推荐
资源详情
资源评论
c++中的 栈 stack 用法
1、stack 的作用
stack 是一个比较简单易用的数据结构,其最大的特性就是先进后出。就好比一
个桶,先放进出的数据就在底部,如果想要取出就先要把上面的数据取出,现
在不懂没关系,看完本文就可以理解了。
stack 适用于许多算法,比较常用的是单调栈算法,也可以用来计算算术表达式
2、stack 的定义
stack<储存的类型> 容器名
如:
储存 int 型数据的栈 stack<int> s;
储存 double 型数据的栈 stack<double> s;
储存 string 型数据的栈 stack<string> s;
储存结构体或者类的栈 stack<结构体名> s;
当然也可以定义 stack 数组:
储存 int 型数据的栈 stack<int> s[n];
储存 double 型数据的栈 stack<double> s[n];
等等,n 为数组的大小
3、stack 常用的成员函数
//其实栈就这几个成员函数
empty()
//堆栈为空则返回真
pop()
//移除栈顶元素
push()
//在栈顶增加元素
size()
//返回栈中元素数目
top()
//返回栈顶元素
示例代码:
#include<iostream>
//c++标准头文件,可以使用 cout,cin 等标准库函数
#include<stack>
//使用 stack 时需要的头文件
using namespace std;
//命名空间,防止重名给程序带来各种隐患,使用 cin,cout,stack
,map,set,vector,queue 时都要使用
int main(){
stack<int> s;
//定义一个 int 类型的 stack
s.push(1);
//往栈里放入一个元素 1
s.push(2);
//往栈里放入一个元素 2
s.push(3);
//往栈里放入一个元素 3
cout<<"按顺序放入元素 1、2、3 后,目前栈里的元素:1 2 3" <<endl;
cout<<"s.size()="<<s.size()<<endl;
//s.size()返回栈内元素的个数
cout<<"s.empty()="<<s.empty()<<endl;
//判断栈是否为空,值为 1 代表空,
0 代表非空,用 s.size()同样可以判断 ,s.size()的值为 0 就代表空的
cout<<"s.top()="<<s.top()<<endl;
//查看栈顶的元素
cout<<endl;
s.pop();
//弹出栈顶元素
cout<<"s.pop()后,目前栈里的元素:1 2"<<endl;
cout<<"s.size()="<<s.size()<<endl;
cout<<"s.empty()="<<s.empty()<<endl;
cout<<"s.top()="<<s.top()<<endl;
cout<<endl;
s.pop();
cout<<"s.pop()后,目前栈里的元素:1"<<endl;
cout<<"s.size()="<<s.size()<<endl;
cout<<"s.empty()="<<s.empty()<<endl;
cout<<"s.top()="<<s.top()<<endl;
cout<<endl;
s.pop();
cout<<"s.pop()后,目前的栈是空的"<<endl;
cout<<"s.size()="<<s.size()<<endl;
cout<<"栈是空的就不能用 s.top()访问栈顶元素了" <<endl;
cout<<"s.empty()="<<s.empty()<<endl;
}
运行结果:
按顺序放入元素 1、2、3 后,目前栈里的元素:1 2 3
s.size()=3
s.empty()=0
s.top()=3
s.pop()后,目前栈里的元素:1 2
s.size()=2
s.empty()=0
s.top()=2
s.pop()后,目前栈里的元素:1
s.size()=1
s.empty()=0
s.top()=1
s.pop()后,目前的栈是空的
s.size()=0
栈是空的就不能用 s.top()访问栈顶元素了
s.empty()=1
4、从 stack 到 string
栈中的数据是不允许随机访问的,就是不能像数组那样用下标访问,也不能遍
历栈内的元素,这是很局限的。实际上,我们经常使用的 string 类型就是一种
栈结构,但是我们可以通过下标访问元素,我们可以看看
//string 的栈相关的成员函数
empty()
//堆栈为空则返回真
pop_back()
//移除栈顶元素
push_back()
//在栈顶增加元素
size()
//返回栈中元素数目
back()
//返回栈顶元素
示例代码:
#include<iostream>
//c++标准头文件,可以使用 cout,cin 等标准库函数
#include<string>
//string 包括了一些字符串操作的库函数,但用 string 时是不用引入
这个头文件的
using namespace std;
//命名空间,防止重名给程序带来各种隐患,使用 cin,cout,stack
,map,set,vector,queue 时都要使用
int main(){
string s;
//定义一个字符串
s.push_back('1');
//往栈里放入一个元素 1
s.push_back('2');
//往栈里放入一个元素 2
s.push_back('3');
//往栈里放入一个元素 3
cout<<"按顺序放入字符 1、2、3 后,目前 string 里的元素:" ;
for(int i=0;i<s.size();i++){
剩余12页未读,继续阅读
资源评论
做人求其滴
- 粉丝: 337
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功