《数据结构》 队列(Queue)操作代码集合
时间:2022-04-26
本文章向大家介绍《数据结构》 队列(Queue)操作代码集合,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
队列基本操作代码集合,来自《数据结构-用C语言描述》(第二版) 高教社 队列是受限制的链表或顺序表(只能从队首取结点,先进先出FIFO),相关操作可以查看之前的博客。
/*链队列*/
typedef struct {
QueueElemType data;
struct Node *next;
} LinkQueueNode;
typedef struct {
LinkQueueNode *front;
LinkQueueNode *rear;
} LinkQueue;
/*初始化*/
int InitQueue(LinkQueue *Q) {
Q->front = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(Q->front != NULL) {
Q->rear = Q->front;
Q->front->next = NULL;
return(TRUE);
}
else {
return(FALSE);
}
}
/*链队入队*/
int EnterQueue(LinkQueue *Q, QueueElemType x) {
LinkQueueNode *NewNode;
NewNode = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(NewNode != NULL) {
NewNode->data = x;
NewNode->next = NULL;
Q->rear->next = NewNode;
Q->rear = NewNode;
}
else {
printf("OVERFLOW:n");
return(FALSE);
}
}
/*链队出队*/
int DeleteQueue(LinkQueue *Q, QueueElemType *x) {
LinkQueueNode *p;
if(Q->front == Q->rear) {
return(FALSE);
}
p = Q->front->next;
Q->front->next = p->next;
if(Q->rear == p) {
Q->rear = Q->front;
}
*x = p->data;
free(p);
return(TRUE);
}
/*循环队列*/
#define MAXSIZE 50
typedef struct {
QueueElemType elem[MAXSIZE];
int front;
int rear;
} SeqQueue;
void InitQueue(SeqQueue *Q) {
Q->front = Q->rear = 0;
}
/*循环队列入队操作*/
int EnterQueue(SeqQueue *Q, QueueElemType x) {
if((Q->rear + 1) % MAXSIZE == Q->front) {
printf("OVERFLOW");
return FALSE;
}
*x = Q->elem[Q->front];
Q->front = (Q->front+1) % MAXSIZE;
}
/*循环队列出队操作*/
int DeleteQueue(SeqQueue *Q, QueueElemType *x) {
if(Q->front == Q->rear) {
return(FALSE);
}
*x = Q->elem[Q->front];
Q->front = (Q->front - 1) % MAXSIZE;
return(TRUE);
}
- .Net 转战 Android 4.4 日常笔记(9)--常用组件的使用方法[附源码]
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(38)-Easyui-accordion+tree漂亮的菜单导航
- .Net 转战 Android 4.4 日常笔记(8)--常见事件响应及实现方式
- silverlight于javascript通信
- 微信上线小游戏:对流量基础入口应用商店革命
- Appium Desktop 使用
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(36)-文章发布系统③-kindeditor使用
- Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
- .Net 转战 Android 4.4 日常笔记(7)--apk的打包与反编译
- 丰富的silverlight控件
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(35)-文章发布系统②-构建项目
- .Net 转战 Android 4.4 日常笔记(6)--Android Studio DDMS用法
- 机器学习加密货币IOTA在机构支持下跃起
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(34)-文章发布系统①-简要分析
- 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 数组属性和方法
- Laravel 连接(Join)示例
- 解决Laravel自定义类引入和命名空间的问题
- 详解Laravel服务容器的绑定与解析
- 修改Laravel自带的认证系统的User类的命名空间的步骤
- PHP使用递归按层级查找数据的方法
- Laravel6.2中用于用户登录的新密码确认流程详解
- PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
- 浅谈PHP array_search 和 in_array 函数效率问题
- 仿抖音短视频APP源码,实现简单的换头像并保存
- php实现JWT(json web token)鉴权实例详解
- laravel实现上传图片,并且制作缩略图,按照日期存放的代码
- 在Laravel中使用MongoDB的方法示例
- 基于thinkphp6.0的success、error实现方法
- Yii框架模拟组件调用注入示例
- 解决laravel 表单提交-POST 异常的问题