当前位置:网站首页>栈和队列的基本概念
栈和队列的基本概念
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;
}
边栏推荐
- Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
- 瑞吉外卖项目:新增菜品与菜品分页查询
- Experience innovation and iteration through the development of lucky draw mini-programs
- 基于Multisim的函数信号发生器–方波、三角波、正弦波[通俗易懂]
- Cloudera Manager —— 端到端的企业数据中心管理工具
- xmind使用指南(XMind具有下列哪些功能)
- IDEA 配置方法注释自动参数
- kubernetes之服务发现
- 最新MySql安装教学,非常详细
- MySQL index usage and optimization
猜你喜欢

想吃菌子,当然是自己上山找了

MySql模糊查询大全

Chrome开发自定义右键菜单实现快速跳转到指定页面

Android studio connects to MySQL and completes simple login and registration functions

ESP8266-Arduino编程实例-MCP9808数字温度传感器驱动

St. Regis Takeaway Project: New dishes and dishes paged query

透过开发抽奖小程序,体会创新与迭代

5 open source Rust web development frameworks, which one do you choose?

MySQL index usage and optimization

多线程学习笔记-2.final关键字和不变性
随机推荐
瑞吉外卖项目:文件的上传与下载
3.网页信息解析方法:Xpath与BeautifulSoup
WebGL给Unity传递参数问题1: Cannot read properties of undefined (reading ‘SendMessage‘)
The latest MySql installation teaching, very detailed
Android studio connects to MySQL and completes simple login and registration functions
音视频基础
蓝牙协议栈开发板 STM32F1 跑蓝牙协议栈 –传统蓝牙搜索演示以及实现原理[通俗易懂]
给你一个大厂面试的机会,你能面试上吗?进来看看!
一文吃透接口调用神器RestTemplate
Docker practical experience: Deploy mysql8 master-slave replication on Docker
【软件工程之美 - 专栏笔记】33 | 测试工具:为什么不应该通过QQ/微信/邮件报Bug?
Addition logic for SAP Commerce Cloud Product Review
Summary of several defragmentation schemes for MySQL (to solve the problem of not releasing space after deleting a large amount of data)
线程池 ThreadPoolExecutor 详解
JVS设置不同应用的登录时效时间
oracle优化:instr做join条件很慢「建议收藏」
普林斯顿微积分读本03第二章--编程实现函数图像绘制、三角学回顾
B/S架构模式的一个整体执行流程
JVS开发套件产品定位
Power BI----几个常用的分析方法和相适应的视觉对象