标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。