使用数组实现队列(C语言)
2017-09-05 20:24
691 查看
队列结构体定义
#define QueueSize 40 // 队伍容量 typedef struct{ DataType queue[QueueSize];// 用于保存类型为DataType队列元素的数组 int front,rear;// 用于保存队头和队尾下标信息 }SeqQueue;1
2
3
4
5
6
1
2
3
4
5
6
实现算法
实现算法存放在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; }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
测试实例
#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; }
相关文章推荐
- C语言使用数组实现简单队列
- 使用数组实现队列----《数据结构与算法分析---C语言描述》
- 数据结构(Data structure):使用双向链表实现队列(C语言)
- 静态数组实现队列(C语言)
- 使用循环数组高效的实现队列类
- C语言数组实现队列
- C语言中使用struct实现数组复制
- Python 使用由单链表构建的数组实现有边际优先队列 (基于class, 包含迭代器)
- C语言中使用指针实现数组排序
- 使用数组实现队列
- 数据结构与算法-----队列-使用数组(顺序结构)实现
- 基于数组的队列实现(C语言)
- 使用JavaScript的数组实现数据结构中的队列与堆栈
- 使用JavaScript的数组实现数据结构中的队列与堆栈
- 使用数组实现一个随机队列
- 使用数组实现队列
- java使用数组实现队列
- 使用数组实现栈和循环队列(JAVA语言)
- 使用数组实现队列
- 使用数组实现双端队列