使用数组实现队列(C语言)
来源:互联网 发布:中国铁塔 网络强国 编辑:程序博客网 时间:2024/04/25 20:41
队列结构体定义
#define QueueSize 40 // 队伍容量typedef struct{ DataType queue[QueueSize];// 用于保存类型为DataType队列元素的数组 int front,rear;// 用于保存队头和队尾下标信息 }SeqQueue;
实现算法
实现算法存放在Queue.h头文件中
// 初始化队列void InitQueue(SeqQueue *SQ){ SQ->front = SQ->rear = 0;}// 判断队列是否为空 int QueueEmpty(SeqQueue SQ){ // 队头坐标与队尾坐标相等时,即为空队列 if(SQ.front == SQ.rear){ return 1; }else{ return 0; }}// 入队操作int EnterQueue(SeqQueue *SQ,DataType e){ // 边界判断,假如队列满了不能入队 if(SQ->rear == QueueSize){ printf("队列已满,不能入队.\n"); return 0; } // 新元素入队,需要将队尾指针往后移动 SQ->queue[SQ->rear++] = e; return 1;}// 出队操作int DeleteQueue(SeqQueue *SQ,DataType *e){ // 边界判断,假如队列空了不能出队 if(SQ->front == SQ->rear){ printf("队列已空,不能出队.\n"); return 0; } // 元素出队,需要将队头指针往后移动 *e = SQ->queue[SQ->front++]; return 1; }
测试实例
#include <stdio.h>#define QueueSize 40// 定义队列结构体typedef char DataType;typedef struct{ DataType queue[QueueSize]; int front,rear; }SeqQueue;// 必须放在定义队列结构体之后#include "SeqQueue.h"int main(void){ SeqQueue SQ; char str[] = {"1234567"}; int i,length = 8; char x; InitQueue(&SQ); for(i=0;i<length;i++){ EnterQueue(&SQ,str[i]); } printf("顺序队列中的元素为:"); if(!QueueEmpty(SQ)){ for(i=SQ.front;i<SQ.rear;i++){ printf("%c",SQ.queue[i]); } } system("pause"); return 0;}
1 0
- 使用数组实现队列(C语言)
- 使用数组实现队列(C语言)
- 静态数组实现队列(C语言)
- C语言数组实现队列
- C语言实现使用静态数组实现循环队列
- C语言实现使用动态数组实现循环队列
- 队列的C语言实现(循环数组结构)
- 队列的数组实现(C语言描述)
- 基于数组的队列实现(C语言)
- C语言队列实现( 动态数组 )
- 静态数组实现循环队列 c语言
- C语言数组实现循环队列
- C语言数据结构-顺序队列-数组实现
- 使用数组实现栈和循环队列(JAVA语言)
- 使用数组实现栈(C语言)
- c语言数据结构实现-数组队列/环形队列
- c语言数据结构应用-数组队列(无锁队列)在多线程中的使用
- C队列 数组实现
- How To Install Apache Tomcat 7 on CentOS 7 via Yum
- "Java:comp/env/"讲解与JNDI
- mysql → INSERT ... ON DUPLICATE KEY UPDATE
- Android代码混淆报错
- Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found
- 使用数组实现队列(C语言)
- Article - Physically Based Rendering
- 已安装了存在签名冲突的同名数据包
- 渗透测试:nc端口转发或反向转发
- leetcode 2:Add Two Numbers
- 多行文本垂直居中
- 弹出遮罩层后禁止滚动效果【实现代码】
- JDBC数据库基本操作
- Linux服务器定位CPU高占用率代码位置经历