数据结构—栈/队列
时间:2022-05-08
本文章向大家介绍数据结构—栈/队列,主要内容包括栈、队列、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
仔细一想
似乎自己已经有半年已经没有手写栈/队列了
STL里面的栈/队列好用是好用但是速度令人堪忧啊。
于是乎今天自己手写了一份栈&&队列,
以后就用这种格式了,跟STL说再见
用的是STL的写法
关于栈和队列,推荐几篇博客
https://www.cnblogs.com/QG-whz/p/5170418.html
http://blog.csdn.net/hguisu/article/details/7674195
http://blog.csdn.net/juanqinyang/article/details/51354293
栈
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 using namespace std;
6 const int MAXN=1e6+10;
7 struct stack
8 {
9 int now,s[1001];
10 stack(){now=0;memset(s,0,sizeof(s));}
11 void pop(){now--;if(now<0)puts("0");}//弹出
12 int size(){return now;}//元素个数
13 void push(int x){s[++now]=x;}//加入元素
14 int top(){return s[now];}//取栈顶元素
15 bool empty(){return !now>=1;}//判断是否为空
16 };
17 int n,opt,x;
18 int main()
19 {
20 stack s;
21 cin>>n;
22 while(n--)
23 {
24 cin>>opt;
25 if(opt==1) cin>>x,s.push(x);
26 if(opt==2) s.pop();
27 if(opt==3) printf("The size of stack is :%dn",s.size());
28 if(opt==4) printf("The top of stack is :%dn",s.top());
29 }
30 return 0;
31 }
队列
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int MAXN=1e6+10;
struct queue
{
int head,tail,q[1001];
queue(){head=tail=0;memset(q,0,sizeof(q));}
void pop(){head++;if(head>tail) puts("error");}
int front(){return q[head];}
void push(int x){q[tail++]=x;}
int size(){return tail-head;}
};
int n,opt,x;
int main()
{
queue q;
cin>>n;
while(n--)
{
cin>>opt;
if(opt==1) cin>>x,q.push(x);
if(opt==2) q.pop();
if(opt==3) printf("The size of queue is :%dn",q.size());
if(opt==4) printf("The front of queue is :%dn",q.front());
}
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Vi 和 Vim 的使用
- k8s删除Terminating状态的命名空间
- CentOS7下vsftpd over SSL/TLS加密传输配置实践
- Xargs Sh -c Skipping the First Argument
- Centos系统安装
- Python 为什么能支持任意的真值判断?
- Python 为什么要在 18 年前引入布尔类型?且与 C、C++ 和 Java 都不同?
- Python计算大文件行数方法及性能比较
- docker容器部署Prometheus服务——云平台监控利器
- ASP.NET Core 奇技淫巧之接口代理转发
- 基于CDH(Cloudera Distribution Hadoop)的大数据平台搭建
- troubleshoot之:用control+break解决线程死锁问题
- Docker 三剑客之docker-compose
- 腾讯云 Severless-Express 项目开发和灰度发布最佳实践
- 在Docker中使用Redis