循环队列的c语言实现
2015-06-11 22:11
483 查看
#include<stdio.h>
#include<stdlib.h>
#define MAXQSIZE 100
typedef int Status;
typedef int QElemtype;
typedef struct {
QElemtype *base;
int front;
int rear;
}SqQueue;
Status InitQueue(SqQueue &Q){
Q.base=(QElemtype *)malloc(MAXQSIZE *sizeof(QElemtype));
if(!Q.base) return 0;
Q.front=Q.rear=0;
return 1;
}
Status QueueLength(SqQueue &Q){
return ((Q.rear-Q.front+MAXQSIZE)%MAXQSIZE);
}
Status EnQueue(SqQueue &Q,QElemtype e){
if((Q.rear+1)%MAXQSIZE==Q.front) return 0;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return 1;
}
Status DeQueue(SqQueue &Q,QElemtype &e){
if(Q.front==Q.rear) return 0;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return 1;
}
Status PrintfQueue(SqQueue &Q){
if(Q.front==Q.rear) return 0;
for(int i=(Q.front%MAXQSIZE);i<(Q.rear%MAXQSIZE);i++) printf("%d\n",Q.base[i]);
}
int main(){
SqQueue q;
QElemtype e;
InitQueue(q);
EnQueue(q,1);
EnQueue(q,2);
EnQueue(q,3);
DeQueue(q,e);
printf("%d\n",QueueLength(q));
PrintfQueue(q);
return 0;
}
本文出自 “zjwzjw369” 博客,谢绝转载!
#include<stdlib.h>
#define MAXQSIZE 100
typedef int Status;
typedef int QElemtype;
typedef struct {
QElemtype *base;
int front;
int rear;
}SqQueue;
Status InitQueue(SqQueue &Q){
Q.base=(QElemtype *)malloc(MAXQSIZE *sizeof(QElemtype));
if(!Q.base) return 0;
Q.front=Q.rear=0;
return 1;
}
Status QueueLength(SqQueue &Q){
return ((Q.rear-Q.front+MAXQSIZE)%MAXQSIZE);
}
Status EnQueue(SqQueue &Q,QElemtype e){
if((Q.rear+1)%MAXQSIZE==Q.front) return 0;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return 1;
}
Status DeQueue(SqQueue &Q,QElemtype &e){
if(Q.front==Q.rear) return 0;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return 1;
}
Status PrintfQueue(SqQueue &Q){
if(Q.front==Q.rear) return 0;
for(int i=(Q.front%MAXQSIZE);i<(Q.rear%MAXQSIZE);i++) printf("%d\n",Q.base[i]);
}
int main(){
SqQueue q;
QElemtype e;
InitQueue(q);
EnQueue(q,1);
EnQueue(q,2);
EnQueue(q,3);
DeQueue(q,e);
printf("%d\n",QueueLength(q));
PrintfQueue(q);
return 0;
}
本文出自 “zjwzjw369” 博客,谢绝转载!
相关文章推荐
- 链队列的c语言实现
- 笔记:《C++ Primer》第1章和第2章
- C语言中可打印字符
- C语言的内存区域(虚拟地址)探索
- LeetCode 之 Contains Duplicate I II III — C++ 实现
- C++ STL中map存储方式——SAP电面(4)
- 一步步将vim改造成C/C++开发环境(IDE)
- C++ int与string的转化
- C++中堆和栈内存分配
- chapter12test1
- C++ 读写文件流
- 聊聊C++临时对象的析构时间点------顺便再次提醒大家谨慎使用string的c_str方法
- LeetCode 之 Rotate Array — C++ 实现
- c++之进制转换16进制-10进制
- C++利用反射和简单工厂模式实现业务模块解耦
- C语言如何调用 memcpy 函数 实现内存拷贝
- LeetCode 之 Min Stack — C++ 实现
- 二进制值和十六进制字符串相互转换的C++代码
- 迷宫问题——堆栈应用(C++版)
- 给四条线段,判断是否是矩形