当前位置:网站首页>栈和队列的基本概念
栈和队列的基本概念
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;
}
边栏推荐
猜你喜欢
随机推荐
After Effects 教程,如何在 After Effects 中修复曝光不足的镜头?
分布式id解决方案
在 Excel 内使用 ODBC 消费 SAP ABAP CDS view
三六零与公安部三所发布报告:关基设施保护成为网络安全博弈关键
VBA实现双击单元格自动输出对号再次双击取消对号
JVS开发套件产品定位
CWE4.8 -- The 25 most damaging software security issues in 2022
学自动化测试哪个培训机构好 试听课程后就选了这个地方学习
MySQL日志中“binlog”的三种格式玩起来真爽
Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
【虚拟化生态平台】树莓派安装虚拟化平台操作流程
How MySQL's allowMultiQueries flag relates to JDBC and jOOQ
Use jOOQ to write vendor-agnostic SQL with JPA's native query or @Formula.
5 个开源的 Rust Web 开发框架,你选择哪个?
vb.net 画曲线
Use ODBC in Excel to read data from CDS view on SAP BTP platform
最全phpmyadmin漏洞汇总
502 bad gateway原因、解决方法
IDEA 配置方法注释自动参数
The item 'node.exe' was not recognized as the name of a cmdlet, function, script file, or runnable program.