数据结构 静态队列笔记
/* 队列:一种先进先出的线性表,它只允许在表的一端插入元素,另一端 删除元素,其中插入元素的一端叫做队尾,删除元素的一端叫做对头。静态队列——使用一维数组储存队列中的元素,一个指针(front)指向 队头,一个指针(rear)指向队尾。 使用的数组必须是循环数组 */# include <stdio.h> # include <stdlib.h> # include <malloc.h>#define LEN 6 // 定义队列长度 // 说明:此循环队列使用空出一个位置的方法解决队列空与满的问题 typedef struct QUEUE {int * pBase; // 用于作为循环数组 int front; // 用于标记队列头 int rare; // 用于标记列尾 }Queue, * pQ; // 创建一个静态队列 void Create_Queue(pQ queue, int len); // 静态队列初始化 void Init_Queue(pQ queue); // 遍历整个队列 void Travel_Queue(pQ queue); // 判断队列是否满 bool Is_Full(pQ queue); // 判断队列是否为空 bool Is_Empty(pQ queue); // 入队 void En_Queue(pQ queue, int val); // 出队,并将出队的数据返还给主函数 void Out_Queue(pQ queue, int * val); // 在队列中查找某元素,并返回该位置 int Search_InQueue(pQ queue, int val); // 计算此时队列长度 int Length_Queue(pQ queue); // 销毁整个队列 void Destory_Queue(pQ queue); int main(void) {Queue queue;Create_Queue(&queue, LEN);Init_Queue(&queue);En_Queue(&queue, 1);En_Queue(&queue, 2);En_Queue(&queue, 3);En_Queue(&queue, 4);Travel_Queue(&queue);int len = Length_Queue(&queue);printf("队列长度为:%d\n", len);int val;Out_Queue(&queue, &val);printf("出队的元素是:%d\n", val);Search_InQueue(&queue, 5);Destory_Queue(&queue);return 0; }void Create_Queue(pQ queue, int len) { queue->pBase = (int *)malloc(len * (sizeof(int)));if (NULL == queue->pBase){printf("动态内存分配失败!\n");exit(-1);} return; } void Init_Queue(pQ queue) {queue->front = 0;queue->rare = 0;return; }void Travel_Queue(pQ queue) {int pos;for (pos = queue->front; pos != queue->rare; pos = (pos+1) % LEN){printf("%-5d", queue->pBase[pos]);}printf("\n");return; }bool Is_Full(pQ queue) {if ( (queue->rare + 1) % LEN == queue->front )return true;elsereturn false; }bool Is_Empty(pQ queue) {if (queue->front == queue->rare)return true;elsereturn false; }void En_Queue(pQ queue, int val) {if ( Is_Full(queue) ){printf("该队列已满!\n");exit(-1);}queue->pBase[queue->rare] = val;queue->rare = (queue->rare + 1) % LEN;return; }void Out_Queue(pQ queue, int * val) {if ( Is_Empty(queue) ){printf("该队列为空!\n");exit(-1);}*val = queue->pBase[queue->front];queue->front = (queue->front + 1) % LEN;return; }int Search_InQueue(pQ queue, int val) {int pos;for (pos = queue->front; pos != queue->rare; pos = (pos+1) % LEN){if (queue->pBase[pos] == val){return pos;}}printf("该元素不在此队列!\n");return -1; }int Length_Queue(pQ queue) {int pos, cnt = 0;for (pos = queue->front; pos != queue->rare; pos = (pos+1) % LEN){++cnt;}return cnt; }void Destory_Queue(pQ queue) {free(queue->pBase);queue->pBase = NULL;return; }
转载于:https://www.cnblogs.com/lnlin/p/6730920.html
数据结构 静态队列笔记相关推荐
- 数据结构 --静态队列 讲解
上次我在 http://blog.csdn.net/nvd11/article/details/8805772 已经解释了链式队列的大概结构和c语言代码实现. 也提到了另一种队列: 静态队列. 其实 ...
- 数据结构 --静态队列的一个简单的C语言代码实现
静态队列的大概原理和部分算法讲解已经在上一篇博文中讲过了.. http://blog.csdn.net/nvd11/article/details/8816699 这里接上篇文章, 用c语言来实现1个 ...
- 数据结构源码笔记(C语言):链接队列
/* LinkQueue.c*/ /*链接队列:函数实现*/#include <stdio.h> #include <stdlib.h>typedef int DataType ...
- c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构
前言 上一章节针对于C语言栈结构做了解析,不清楚的可以回顾一下. 本章节主要针对于C语言的基础数据结构队列做以解析. 数据结构之队列 队列是一种特殊的 线性表 ,特殊之处在于它只允许在表的前端(fro ...
- 数据结构课程学习笔记
整理一下上数据结构课记录的笔记. 第一章 绪论 1.1 数据结构的基本概念 1.2 算法的基本概念 1.2.1 时间复杂度 事前预估算法时间开销T(n)与问题规模n的关系.分析算法操作的执行次数x和问 ...
- 数据结构期末复习笔记(NEU版)
数据结构期末复习笔记 绪论 数据结构的概念 数据结构的分类 数据结构研究的内容 算法的重要特性 算法的设计要求 题目汇总 线性表 栈和队列 栈 队列 题目 数组与广义表 树 二叉树 二叉树的遍历 线索 ...
- 数据结构源码笔记(C语言描述)汇总
数据结构源码笔记(C语言):英文单词按字典序排序的基数排序 数据结构源码笔记(C语言):直接插入排序 数据结构源码笔记(C语言):直接选择排序 数据结构源码笔记(C语言):置换-选择算法 数据结构源码 ...
- 数据结构源码笔记(C语言):英文单词按字典序排序的基数排序
//实现英文单词按字典序排序的基数排序算法#include<stdio.h> #include<malloc.h> #include<string.h>#defin ...
- 数据结构源码笔记(C语言):索引文件建立和查找
//实现索引文件建立和查找算法#include<stdio.h> #include<malloc.h> #include<string.h> #include< ...
- 数据结构源码笔记(C语言):快速排序
//实现快速排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...
最新文章
- synchronized与Lock的区别与使用
- android drawerlayout 遮罩层白色,DrawerLayout放在Toolbar的下方导致NavigationView出现与状态栏等高的遮...
- mysql数据库自动转储_mysql数据库数据定时封装转储
- KubeNode:阿里巴巴云原生 容器基础设施运维实践
- postman模拟登录接口
- 主板和cpu搭配表_GTX1650显卡搭配知识:GTX1650配什么CPU和主板及多大电源?
- Active Directory边界
- .NET Conf 2019 今天在上海开幕,图片直播地址
- phpcmsV9 排序规则 - 小结篇
- 对开源库 limdu 命令注入漏洞 (CVE-2020-4066) 的简要分析
- 一、UNIX系统概述
- 史上最全的画册制作流程—设计前的策划
- VScode代码美化工具Beautify
- 微信群二维码七天失效如何解决?有没有办法创建一个长期有效的微信群?
- TP5.1数据库安全
- java-画出二维码
- 接收信号强度值dbm分析
- Twitter网页版推出通用搜索功能 复制链接
- 笔记 | 杂谈控制固定效应这件事
- 女博士年薪156万入职华为:给员工吃饱了,他们才会为你拼命
热门文章
- 电话聊天狂人 (25 分)(map映射 简单做法)
- js基础知识汇总04
- Python:functools.cmp_to_key(func)使用
- APIcloud解决检出到指定路径:false问题
- Caffe傻瓜系列(7):solver优化方法
- deepsort报错 No module named ‘sklearn.utils.linear_assignment_‘ 问题解决
- Linux 命令之——文件行数查询命令温习
- 解决Python安装后目录下缺失Scripts文件夹
- 计算机课程联合考试是什么意思,计算机技术在职研究生能否通过一月联考的方式学习课程内容...
- android httpget 参数,如何在Android中向HTTP GET请求添加参数?