当前位置:网站首页>栈和队列的基本概念
栈和队列的基本概念
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;
}
边栏推荐
- Different lower_case_table_names settings for server ('1') and data dictionary ('0') solution
- 在 Excel 里使用 ODBC 读取 SAP BTP 平台上 CDS view 的数据
- 最新MySql安装教学,非常详细
- 一周精彩内容分享(第14期)
- mysql 索引使用与优化
- 分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ
- vb.net 画曲线
- 关于==和equals的区别和联系,面试这么回答就可以
- CameraToolUnity中两种摄像机的两种观察控制方式
- LeetCode 1161.最大层内元素和:层序遍历
猜你喜欢

安装MYSQL遇到问题:write configuration file卡主

Read through the interface to call the artifact RestTemplate

三六零与公安部三所发布报告:关基设施保护成为网络安全博弈关键

The latest MySql installation teaching, very detailed

After class, watching the documentation and walking back to the lab, I picked up the forgotten SQL operators again

基于C51实现按键控制

Power BI----几个常用的分析方法和相适应的视觉对象

音视频基础

【虚拟化生态平台】树莓派安装虚拟化平台操作流程

JVS轻应用的组成与配置
随机推荐
Docker实践经验:Docker 上部署 mysql8 主从复制
无法将“node.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
St. Regis Takeaway Project: File Upload and Download
矩形脉冲波形的占空比及脉冲和瞬态特征的测量
Use Excel to read data exposed by SAP ABAP CDS View through ODBC
Caused by: 类找不到: org.apache.flink.table.planner.delegation.ParserFactory或者ExecutorFactory
JVS设置不同应用的登录时效时间
B/S架构模式的一个整体执行流程
oracle优化:instr做join条件很慢「建议收藏」
mysql automatically adds creation time and update time
AWS Amazon cloud account registration, free application for 12 months Amazon cloud server detailed tutorial
CWE4.8 -- 2022年危害最大的25种软件安全问题
lotus-local-net 2k v1.17.0-rc4
WebGL给Unity传递参数问题1: Cannot read properties of undefined (reading ‘SendMessage‘)
CameraToolUnity中两种摄像机的两种观察控制方式
keras自带数据集(横线生成器)
想吃菌子,当然是自己上山找了
Acwing第 62 场周赛【未完结】
Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
「R」使用ggpolar绘制生存关联网络图