ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

循环队列:给出rear和quelen(队中元素个数),不给出front,实现入队出队操作(摆烂组第二弹)

2022-03-19 23:30:08  阅读:230  来源: 互联网

标签:Circularqueue ElemType quelen 队中 入队 MAXSIZE 给出 printf rear


非计算机专业软基作业,仅代表个人拙见

欢迎评论区友好讨论

欢迎各位大佬指点,本人fw,求轻喷

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
static int quelen=0;//全局变量 
typedef char ElemType;
typedef struct
{ ElemType data[MAXSIZE];
int rear;
int s;
}Circularqueue;
void InitQueue(Circularqueue *q)//构造空队列 
{q->rear =MAXSIZE;
quelen=1;
q->s =0;
printf("我初始化成功了s=%d,quelen=%d,rear=%d\n ",q->s,quelen,q->rear);
}
int QueueEmpty(Circularqueue *q)//判断队列空 
{if((((q->rear)-quelen+1)==q->rear )&&q->s ==0)
return (1);
else 
return (0);
}
void InsertQueue(Circularqueue *q,ElemType x)//入队 
{if((((q->rear)-quelen+1)==q->rear )&&q->s ==1)
{printf("\n 队满,上溢!");
exit(1); }
quelen++;//调试2 
q->rear =(q->rear +1);
if(q->rear==MAXSIZE+1)q->rear=1;
q->data [q->rear -1]=x;
printf("队内有元素<quelen-1>%d个,新加入的是%d,rear指针在%d,存在了rear-1在%d\n",quelen-1,x,q->rear,q->rear-1);
q->s =1;
}
ElemType DeleteQueue(Circularqueue *q)//出队 
{ElemType x;
if(QueueEmpty(q))
{printf("\n 队空,下溢!");
exit(1); 
}
quelen--;
if(((q->rear)-quelen+1)==MAXSIZE+1) quelen=MAXSIZE-(q->rear);
x=q->data [((q->rear)-quelen+1)-1];
if(quelen==1 ) q->s =0;
return x;
}
ElemType GedHead(Circularqueue *q)//读取队头元素 
{ElemType x;
if(QueueEmpty(q))
{printf("\n 队空,下溢!");
exit(1); 
}
//printf("我现在输出的是第%d块数组",(-1*((q->rear)-quelen+1)%MAXSIZE));
x=q->data [-1*(((q->rear)-quelen+1)%MAXSIZE)];
return x;
}
int main ()
{int i;
Circularqueue myqueue,*q;
q=&myqueue;
InitQueue(q);//调试成功 
for(i=0;i<=99;i++)
InsertQueue(q,i);//调试成功 
for(i=0;i<=99;i++)
{printf("出队元素是%d\n",DeleteQueue(q));//GedHead有问题(已修复)
}
return 0;
}

 

 

 

后面的结果懒得截图了

 quelen的修改方法

出队的修改方法

 

 

标签:Circularqueue,ElemType,quelen,队中,入队,MAXSIZE,给出,printf,rear
来源: https://blog.csdn.net/qq_63617533/article/details/123583398

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有