当前位置:网站首页>栈和队列的基本概念
栈和队列的基本概念
2022-07-31 11:53:00 【马可爱家的马可爱】
1、栈和队列的基本认识
栈具有先进后出的特性;而队列具有先进先出的特性。所以从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,所以栈和队列其实是比较特殊的线性表,只允许在表的一端或者两端进行操作而已!
2、循环队列中判队空、队满条件
//----------------------循环队列的顺序存储结构------------------------
typedef struct{
QElemType *base; /* 初始化的动态分配存储空间 */
int front; //头指针,若队列不为空,指向队列头元素
int rear; //尾指针,若队列部位空,指向对尾的元素的下一个位置
}SeQueue;
//----------------------构造一个空队列Q———————————————————————————————
void InitQueue(SeQueue *Q){
//base指针用于申请指针并存放数据
Q->base= (QElemType*)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q->base){
exit(OVERFLOW);
}
Q->front=Q->rear=0;//头指针和尾指针置为0,队列为空
return OK;
}
//---------------------队空-----------------------------------------
Q->front=Q->rear
//---------------------队满-----------------------------------------
(Q.real+1)%MAXSIZE == Q.front
对于非循环队列,尾指针和头指针的差值便是队列长度,而对于循环队列,差值可能是负值,所以需要将差值加上MAXSIZE,然后与MAXSIZE求余
//---------------------求一个循环队列的长度--------------------------
int QueueLength(SqQueue Q){
//返回Q中的元素个数,即队列的长度
return (Q.real-Q.front+MAXSIZE)%MAXSIZE;
}
//----------------------在对尾插入元素e,若为满队列时溢出--------------
Status EnQueue(SeQueue *Q, QElemType e){
if((Q.real+1)%MAXSIZE == Q.front) //判断是否队满
return ERROR;
Q->base[Q->rear] = e; //新元素插入队尾
Q->rear = (Q->rear + 1)%MAXSIZE; //队尾指针加1
return OK;
}
//----------------------删除队头元素,front+1------------------------
Status DeQueue(SeQueue *Q, QElemType *e){
if Q->front=Q->rear(){
return ERROR;
}
*e = Q->base[Q->front];
Q->front = (Q->front + 1)%MAXSIZE; //队尾指针加1
return OK;
}
边栏推荐
- 台达PLC出现通信错误或通信超时或下载时提示机种不符的解决办法总结
- JVS开发套件产品定位
- 5 个开源的 Rust Web 开发框架,你选择哪个?
- ESP8266-Arduino编程实例-HDC1008温度湿度传感器驱动
- [Virtualization ecological platform] Raspberry Pi installation virtualization platform operation process
- 生信周刊第38期
- mysql automatically adds creation time and update time
- 拥抱趋势!阿里这套微服务开源框架权威手册,实战到底层细致清晰
- IDEA 配置方法注释自动参数
- 【虚拟化生态平台】平台架构图&思路和实现细节
猜你喜欢

Obsidian设置图床

vb.net 画曲线

If the value of the enum map does not exist, deserialization is not performed

Cloudera Manager —— 端到端的企业数据中心管理工具

Mysql环境变量的配置(详细图解)

学习爬虫之Scrapy框架学习(1)---Scrapy框架初学习及豆瓣top250电影信息获取的实战!

Docker搭建Mysql主从复制

文件包含漏洞

Different lower_case_table_names settings for server ('1') and data dictionary ('0') solution

一文带你了解redux的工作流程——actionreducerstore
随机推荐
How to correctly write the binary stream of the file returned by the server to the local file and save it as a file
502 bad gateway causes and solutions
mysql 索引使用与优化
Threading(in thread main)
Distributed id solution
MySQL模糊查询性能优化
IDEA configure method annotation automatic parameters
数据持久化技术——MP
「R」使用ggpolar绘制生存关联网络图
Use Excel to read data exposed by SAP ABAP CDS View through ODBC
mysql automatically adds creation time and update time
在 Excel 内使用 ODBC 消费 SAP ABAP CDS view
若枚举映射的值不存在,则不进行反序列化
lotus-local-net 2k v1.17.0-rc4
keras自带数据集(横线生成器)
瑞吉外卖项目:文件的上传与下载
基于C51实现按键控制
CWE4.8 -- 2022年危害最大的25种软件安全问题
JVS设置不同应用的登录时效时间
AWS亚马逊云账号注册,免费申请12个月亚马逊云服务器详细教程