摘要:本文主要向大家介绍了C/C++知识点之C语言实现常用数据结构——队列,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之C语言实现常用数据结构——队列,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
#include
#include
#define MAX_SIZE 10
/* 用一个动态数组来实现队列 */
typedef struct Queue {
int Capacity;
int Front;
int Rear;
int Size;
int data[MAX_SIZE];
} Queue;
void Error(char *error) {
printf("%s",error);
}
void FatalError(char *fatalerror) {
printf("%s",fatalerror);
}
int IsEmpty(Queue *Q) {
return Q->Size == 0;
}
int IsFull(Queue *Q) {
return Q->Size == Q->Capacity;
}
void Init( Queue *Q ) {
Q->Size = 0;
Q->Front = 1;
Q->Rear = 0;
Q->Capacity = MAX_SIZE;
}
static int Succ(int value,Queue *Q) {
if(++value == Q->Capacity) {
value = 0;
}
return value;
}
void Enqueue(int X,Queue *Q) {
if( IsFull( Q ) )
FatalError("Full queue");
else {
Q->Size++;
Q->Rear = Succ(Q->Rear,Q);
Q->data[ Q->Rear ] = X;
}
}
void Dequeue(Queue *Q) {
if(IsEmpty(Q))
FatalError("Empty queue");
else {
Q->Size--;
Q->Front = Succ(Q->Front,Q);
}
}
int FrontAndDequeue(Queue *Q) {
int Tmp;
if(IsEmpty(Q))
Error("Empty queue");
else {
Q->Size--;
Tmp = Q->data[Q->Front];
Q->Front = Succ(Q->Front,Q);
return Tmp;
}
}
void DisposeQueue( Queue *Q ) {
free(Q->data);
free(Q);
}
main() {
Queue *q ;
Init(q);
int i;
for(i = 0; i <MAX_SIZE; i++) {
Enqueue(i,q);
}
for(i = 0; i <MAX_SIZE; i++) {
printf("%d\n",FrontAndDequeue(q));
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号