循环队列实现数据的入队与出对程序算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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");

}

相关文档
最新文档