队列的数组实现
来源:互联网 发布:桌面版windows手机 编辑:程序博客网 时间:2024/05/17 08:27
数据结构与算法分析——c语言描述 第三章 队列的数组实现
注意rear和front初始化的赋值。
queue.h
typedef int ElementType;#ifndef _Queue_h#define _Queue_hstruct QueueRecord;typedef struct QueueRecord *Queue;int isEmpty(Queue q);int isFull(Queue q);Queue createQueue(int maxElements);void disposeQueue(Queue q);void makeEmpty(Queue q);void enqueue(ElementType X, Queue q);ElementType front(Queue q);void dequeue(Queue q);ElementType frontAndDequeue(Queue q);#endif
queue.c
#include"queue.h"#include"fatal.h"#include<stdlib.h>#defineMinQueueSize (5)struct QueueRecord{int capacity;int front;int rear;int size;ElementType *array;};int isEmpty(Queue q) {return q->size == 0;}int isFull(Queue q) {return q->size == q->capacity;}Queue createQueue(int maxElements) {if (maxElements < MinQueueSize)Error("Queue size is too small");Queue q = malloc(sizeof(struct QueueRecord));if (q == NULL)Error("out of memory");q->array = malloc(maxElements*sizeof(ElementType));if(q->array==NULL)Error("out of memory");q->capacity = maxElements;makeEmpty(q);return q;}void makeEmpty(Queue q) {q->size = 0;q->front = 1;//这个是重点啊,当增加一个元素之后,rear和front同时都是1q->rear = 0;}void enqueue(ElementType X, Queue q) {if (isFull(q))Error("queue is full");q->size++;q->rear = (q->rear + 1) % q->capacity;q->array[q->rear] = X;}ElementType front(Queue q) {if (isEmpty(q))Error("queue is empty");return q->array[q->front];}void dequeue(Queue q) {if (isEmpty(q))Error("queue is empty");q->size--;q->front = (q->front + 1) % q->capacity;}ElementType frontAndDequeue(Queue q) {ElementType x = front(q);dequeue(q);return x;}
main.c
#include<stdlib.h>#include<stdio.h>#include"queue.h"int main() {Queue q = createQueue(50);for (int i = 0; i < 8; i++){enqueue(i, q);}printf("%d\n", frontAndDequeue(q));printf("%d\n", frontAndDequeue(q));printf("%d\n", frontAndDequeue(q));}
2 0
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 数组实现的队列
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 数组实现的队列
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现(循环队列)
- 静态数组实现的队列
- 复数的四则运算
- cf #327 div2 C.Median Smoothing
- cf#8VC Venture Cup 2016 - Final Round (Div. 2 Edition)-C - XOR Equation-数学/位运算
- htmlspecialchars和htmlentities对json数据的影响
- C# SqlServer 未定字段未定条件的组合查询写法
- 队列的数组实现
- 高性能web系统的架构和系统优化
- Android开发-对于PendingIntent的简单理解
- Android 编程下 Touch 事件的分发和消费机制
- HTTP/1.1 协议规定的 HTTP 请求方法
- Android 自定义缩放球以及水纹效果
- R语言-data.table包
- KINECT2深度图的floodfill算法实现(16位ushort)
- CSS学习(十七)-盒模型