永发信息网

设计一个字符型的循环队列,编写入队(push)、出对(pop)、读队列头元素(readtop)、显示队列中全部元

答案:1  悬赏:0  手机版
解决时间 2021-04-15 23:53
设计一个字符型的循环队列,编写入队(push)、出对(pop)、读队列头元素(readtop)、显示队列中全部元
最佳答案
Status InitQueue(SqQueue &Q)
{ // 构造一个空队列Q
Q.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q.base) // 存储分配失败
exit(OVERFLOW);
Q.front=Q.rear=0;
return OK;
}

Status DestroyQueue(SqQueue &Q)
{ // 销毁队列Q,Q不再存在
if(Q.base)
free(Q.base);
Q.base=NULL;
Q.front=Q.rear=0;
return OK;
}

Status ClearQueue(SqQueue &Q)
{ // 将Q清为空队列
Q.front=Q.rear=0;
return OK;
}

Status QueueEmpty(SqQueue Q)
{ // 若队列Q为空队列,则返回TRUE,否则返回FALSE
if(Q.front==Q.rear) // 队列空的标志
return TRUE;
else
return FALSE;
}

int QueueLength(SqQueue Q)
{ // 返回Q的元素个数,即队列的长度
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}

Status GetHead(SqQueue Q,QElemType &e)
{ // 若队列不空,则用e返回Q的队头元素,并返回OK,否则返回ERROR
if(Q.front==Q.rear) // 队列空
return ERROR;
e=*(Q.base+Q.front);
return OK;
}

Status EnQueue(SqQueue &Q,QElemType e)
{ // 插入元素e为Q的新的队尾元素
if((Q.rear+1)%MAXQSIZE==Q.front) // 队列满
return ERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}

Status DeQueue(SqQueue &Q,QElemType &e)
{ // 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR
if(Q.front==Q.rear) // 队列空
return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return OK;
}

Status QueueTraverse(SqQueue Q,void(*vi)(QElemType))
{ // 从队头到队尾依次对队列Q中每个元素调用函数vi().一旦vi失败,则操作失败
int i;
i=Q.front;
while(i!=Q.rear)
{
vi(*(Q.base+i));
i=(i+1)%MAXQSIZE;
}
printf("\n");
return OK;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
帮我取带有“幸福”这两个字的网名。女孩用的
《诛仙》到底会不会出第二部。。我是狂热诛仙
活力板(蛇板)的前轮可以和后轮调换吗?
谁能告诉我超炮里flaj是什么梗?
湖州地区有黑魔鬼香烟卖嘛?价格多少?
请问2011年本命年结婚好不好
头晕是什麽原因啊
这个杀软好吗
cfak47最佳功能是什么
WOW美服华人联盟公会
寻一个好的炫舞舞团、华东一的
当眼泪在眼框里打转你还可保持微笑 这叫什么
时光不会再倒流,我也不会再回头求下句
喝维生素C和维生素E有什么好处
为什么我家金山毒霸总是更新失败
推荐资讯
脑筋〈急〉转弯
男朋友快生日了、第一次陪他过生日、该送什么
如何安装xp?
淡忘咋理解?
怎么把下载的视频播放器设置成电脑默认的?
天龙八部钱庄寄售物品多少天不取会被系统删除
号被盗怎么能找回来
我适合BOBO头吗 》?我现在这个是什么发型?
用手机开QQ会员每月多少钱?有啥好处?
qq炫舞哪个区男号多呐?
地下城与勇士中那个人物最好用
乒乓比赛口号,求好听的乒乓球社团名称及宗旨
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?