在QueueCycyleControl.c中实现此方法
#include "QueueCycleControl.h"
SECYCLEQUEUE inCycleQueue(SECYCLEQUEUE Q,CDT x){
//1.判断循环队列是否已经满了,MOD(队尾指针+1,m)=队头指针
if((Q.rear+1)%CM==Q.front){
printf("queue is full!n");
}else{
//2.在队尾插入,计算队尾指针的
Q.rear=(Q.rear+1)%CM;
//3.设置插入结点的值数值
Q.data[Q.rear]=x;
printf("in Cycle queue Success!n");
}
return Q;
}
(3)删除
在QueueCycyleControl.h写出方法声明
#include "QueueCycleCs.c"
/*
循环队列删除
*/
SECYCLEQUEUE outCycleQueue(SECYCLEQUEUE Q);
/*
打印循环队列
*/
void printCycleQueue(SECYCLEQUEUE Q);
在QueueCycyleControl.c中实现此方法
#include "QueueCycleControl.h"
SECYCLEQUEUE outCycleQueue(SECYCLEQUEUE Q){
//1.判断循环队列是否是空
if(Q.front==Q.rear){
printf("Cycle queue is Empty!n");
}else{
//2.删除结点从队头删除,计算队头指针:队头指针=MOD(队头指针+1,m)
Q.front=(Q.front+1)%CM;
printf("out cycle queue success!n");
}
return Q;
}
/*
打印循环队列
*/
void printCycleQueue(SECYCLEQUEUE Q){
//M=5;
//1.从队头开始打印数据
SECYCLEQUEUE temp=Q;
printf("queue={");
//2.判断的条件是,队头指针!=队尾指针
while (temp.front!=temp.rear) {
temp.front=(temp.front+1)%CM;
if(temp.front==((Q.front+1)%CM)){
printf("%c",temp.data[temp.front]);
}else{
printf(",%c",temp.data[temp.front]);
}
}
printf("}n");
}
在main.c中的main方法(int main(int argc, const char * argv[]) {})调用此方法,并且进行判断
#include "QueueCycleControl.h"
int main(int argc, const char * argv[]) {
//创建循环队列
SECYCLEQUEUE CQ=initCycleQueue();
//插入数据5个结点,但是最大是5,一个空闲,最后一个添加不进去,
CQ=inCycleQueue(CQ, 'a');
CQ=inCycleQueue(CQ, 'b');
CQ=inCycleQueue(CQ, 'c');
CQ=inCycleQueue(CQ, 'd');
CQ=inCycleQueue(CQ, 'e');
printCycleQueue(CQ);
//删除节点-三个结点
CQ=outCycleQueue(CQ);
CQ=outCycleQueue(CQ);
CQ=outCycleQueue(CQ);
printCycleQueue(CQ);
//插入-两个结点
CQ=inCycleQueue(CQ, 'e');
CQ=inCycleQueue(CQ, 'f');
printCycleQueue(CQ);
//删除节点--删除四个结点,现在此时是三个结点,最后一个删除不了
CQ=outCycleQueue(CQ);
CQ=outCycleQueue(CQ);
CQ=outCycleQueue(CQ);
CQ=outCycleQueue(CQ);
printCycleQueue(CQ);
return 0;
}










