数据结构学习之队列的数组实现
来源:互联网 发布:药智网医保目录数据库 编辑:程序博客网 时间:2024/06/11 13:29
//队列数据类型定义
typedef int ElementType;
#ifndef _Queue_h
struct 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"
#define MinQueueSize (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)
{
Queue Q;
if(MaxElements<MinQueueSize)
Error("Queue size is too small");
Q=malloc(sizeof(struct QueueRecord));
if(Q==NULL)
FatalError("Out of space");
Q->Array=malloc(sizeof(ElementType)*MaxElements);
if(Q->Array==NULL)
FatalError("Out of space");
Q->Capacity=MaxElements;
MakeEmpty(Q);
return Q;
}
void MakeEmpty(Queue Q)
{
Q->Size=0;
Q->Front=1;
Q->Rear=0;
}
void DisposeQueue(Queue Q)
{
if(Q!=NULL)
{
free(Q->Array);
free(Q);
}
}
//队头和队尾的设置
static int Succ(int Value,Queue Q)
{
if(++Value==Q->Capacity)
Value=0;
return Value;
}
void Enqueue(ElementType X,Queue Q)
{
if(IsFull(Q))
Error("Full Queue");
else
{
Q->Size++;
Q->Rear=Succ(Q->Rear,Q);
Q->Array[Q->Rear]=X;
}
}
ElementType Front(Queue Q)
{
if(!IsEmpty(Q))
return Q->Array[Q->Front];
Error("Empty queue");
return 0;
}
void Dequeue(Queue Q)
{
if(IsEmpty(Q))
Error("Empty queue");
else
{
Q->Size--;
Q->Front=Succ(Q->Front,Q);
}
}
ElementType FrontAndDequeue(Queue Q)
{
ElementType X=0;
if(IsEmpty(Q))
Error("Empty queue");
else
{
Q->Size--;
X=Q->Array[Q->Front];
Q->Front=Succ(Q->Front,Q);
}
return X;
}
- 数据结构学习之队列的数组实现
- 经典数据结构之数组实现的队列
- 数据结构之数组实现队列
- 数据结构队列之环形队列的动态数组实现:queue
- 数据结构学习之队列的Java实现
- 【数据结构】队列-数组的实现
- 数据结构之——基于数组实现的循环队列
- 数据结构之数组实现基础队列结构
- 数据结构--队列之C数组实现
- 数据结构之循环数组实现队列
- 数据结构之队列的实现
- 数据结构之队列的实现
- 数据结构之 队列的实现!
- 数据结构学习之队列的链式存储的C++实现
- 数据结构---队列(数组实现)
- 数据结构学习之循环队列的另一种c++实现
- Java数据结构之队列-使用数组实现队列
- 数据结构之队列(数组队列)
- 什么是HTML
- C++编程学习之leetCode OJ
- 将一串字符串按指定编码表输入到文本中
- c++ tbb
- 2089 不要62
- 数据结构学习之队列的数组实现
- MFC连接sqlite3数据库
- svn资源库的创建、启动及相关命令
- 2091 空心三角形
- 连续子数组最大和
- poj2109 Power of Cryptography(数学题)
- flume笔记(一)
- ajax传对象或者数组到后端
- JavaScript实现公历转换农历