循环队列实现数据的入队与出对程序算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#define maxlen 11
typedef struct{
int data[maxlen];
int front;
int rear;
}seqqueue;
seqqueue *seq()
{
seqqueue *Q;
Q=(seqqueue *)malloc(sizeof(seqqueue));
Q->front=0;
Q->rear=0;
return Q;
}
int full(seqqueue *Q){
if(Q->front==(Q->rear+1)%maxlen)
return 1;
else
return 0;
}
int empty(seqqueue *Q){
if (Q->front==Q->rear)
return 1;
else
return 0;
}
void add(seqqueue *Q,int x)
{
if(!full(Q))
{
Q->rear=(Q->rear+1)%maxlen;
Q->data[Q->rear]=x;
}
else
printf("queue full!");
}
void del(seqqueue *Q)
{
if(!empty(Q))
Q->front=(Q->front+1)%maxlen;
else
printf("queue empty");
}
int length(seqqueue *Q)
{
int a;
a=(Q->rear-Q->front+maxlen)%maxlen;
return a;
}
void out(seqqueue *Q)
{
int i,j,y;
j=length(Q);
for(i=1;i { y=(Q->front+i)%maxlen; printf("%3d",Q->data[y]); } } void main() { seqqueue Q; int i,x,n; Q=*seq(); printf("该循环最多存放10个数。\n"); printf("请输入你要输入元素的个数:"); scanf("%d",&n); printf("请输入%d个元素:",n); for(i=0;i { scanf("%d",&x); add(&Q,x); } printf("循环中存放的元素为:\n"); out(&Q); printf("\n"); printf("请输入入队元素:"); scanf("%d",&x); add(&Q,x); out(&Q); printf("\n"); printf("请选择出队元素个数:"); scanf("%d",&n); for(i=0;i { del(&Q); if(empty(&Q)==1) printf("queue empty\n"); } out(&Q); printf("\n"); printf("请选择入队元素个数:"); scanf("%d",&n); printf("请输入入队元素:"); for(i=0;i { scanf("%d",&x); add(&Q,x); if(full(&Q)==1) printf("queue full\n"); } out(&Q); printf("\n"); }