博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ STL之stack栈
阅读量:6275 次
发布时间:2019-06-22

本文共 1023 字,大约阅读时间需要 3 分钟。

简介

栈的特点

栈是C++中很常用的一种线性数据结构,定义在头文件<stack>中,具有如下特点:

  • 栈中的数据元素遵守"先进后出" (First In Last Out) 的原则,简称FILO结构;
  • 只能在栈顶进行插入和删除操作;

基本操作

  • 入栈:
    在入栈的过程中,栈顶的位置一直在”向上“移动,而栈底是固定不变的。
  • 出栈:
    出栈的顺序为3, 2, 1 ,顺序与入栈时相反,这就是所谓的"先进后出"。
    在出栈的过程中,栈顶位置一直在”向下“移动,而栈底一直保持不变。

具体实现

这里,我们主要讲述一下如何使用STL实现栈。

  • 定义:stack<int> s;
  • 入栈:s.push(3);
  • 出栈:s.pop();
  • 判空:s.empty();
  • 取大小:s.size();

系统类型:

#include 
#include
using namespace std; int main(){ stack
s; s.push(1); s.push(5); s.push(7); cout << s.size() << endl; while(!s.empty()) { cout << s.top() << " "; s.pop(); } return 0;}复制代码

输出:

37 5 1复制代码

自定义类型:

自定义类型也是很简单的:

#include 
#include
using namespace std; struct node{
int val; node(int _v): val(_v) {}};int main(){ stack
s; s.push(node(1)); s.push(node(5)); s.push(node(7)); cout << s.size() << endl; while(!s.empty()) { node tmp = s.top(); s.pop(); cout << tmp.val << " "; } return 0;}复制代码

输出同上。

转载自我的博客,原文地址:

转载于:https://juejin.im/post/5b378fadf265da59af40a6af

你可能感兴趣的文章
VS 编译链接错误集锦
查看>>
Dns域名服务器之,ACL ,转发域及子域授权的基本配置
查看>>
Android权限列表
查看>>
Linux中的网络监控命令
查看>>
360项目-07
查看>>
使用Nginx进行TCP/UDP端口转发
查看>>
读书笔记2(Effective java)
查看>>
[bat]批量替换文件内容
查看>>
Java代码到字节码——第一部分
查看>>
Linux挂载安装VMware tool
查看>>
Android中利用ViewFliper实现屏幕切换效果
查看>>
群发quota报警邮件脚本
查看>>
C语言进阶【文件】常用文件操作函数详解(一)
查看>>
(四)基于Spring Cloud Fegin的跨服调用
查看>>
博为峰Java技术文章 ——JavaEE Hibernate实例状态
查看>>
RFC4291, IPv6 的单播地址到底是哪几种?
查看>>
Linux(centos)系统各个目录的作用详解 推荐
查看>>
zabbix监控进程与端口
查看>>
Libvirsh 问题:GLib-WARNING **: gmem.c:483: custom memory allocation vtable not supported
查看>>
COALESCE函数
查看>>