c语言编程队列题,数据结构C语言编程 队列.doc

数据结构C语言编程 队列

#include

#include

#define MAXQSIZE 10

typedef struct

{

int *base; //存储空间的起始地址,即数组的首地址,即数组名

int front; //顺序存储,即地址,所以用下标表示元素,front是第一个元的下标

int rear; //rear是最后一个元素的下标

}SqQueue;

void InitQueue(SqQueue & Q)//构造一个空队列

{

Q.base =(int *)malloc(MAXQSIZE *sizeof(int));

if(!Q.base )

{

printf("构造队列失败!\n");

exit(1);

}

Q.front =Q.rear =0;

printf(" ----------队列构造成功,可容纳%d个元素!---------\n",MAXQSIZE);

}

int QueueLength(SqQueue &Q)

{

return (Q.rear -Q.front +MAXQSIZE) % MAXQSIZE;

}

void EnQueue(SqQueue &Q)//入队列

{

int e;

if(QueueLength(Q)==MAXQSIZE)

{

printf("队列已满!\n");

return;

}

scanf("%d",&e);

Q.base [Q.rear ]=e;

Q.rear =(Q.rear +1)%MAXQSIZE;

}

int DeQueue(SqQueue &Q,bool &T)//出队列

{

if(QueueLength(Q)==0)

{

printf("队列元素为空\n");

T=false;

return 0;

}

T=true;

Q.front =(Q.front +1)%MAXQSIZE;

return Q.base [(Q.front-1)%MAXQSIZE];

}

void print(SqQueue &Q)

{

printf("\n\n ----------当前队列有%d个元素!----------\n\n\n",QueueLength(Q));

}

int display(SqQueue &Q)

{

for (int i=Q.front;i!=Q.rear%MAXQSIZE;i=(i+1)%MAXQSIZE)

printf(" %d",Q.base[i]);

return 0;

}

int main()

{

int n,m,temp,i;

bool T=true;

SqQueue Q;

InitQueue(Q);

printf("0 -->入队列\n1 -->出队列\n2 -->退出\n请选择:");

scanf("%d",&n);

while(n!=2)

{

switch(n)

{

case 0:

printf("请输入所要入队列的元素的个数:");

scanf("%d",&m);

printf("请依次输入所要队列的元素的权值:\n");

for(i=1;i<=m;i++)

EnQueue(Q);

printf("当前队列中的元素为:\n");

display(Q);

print(Q);

break;

case 1:

printf("请输入所要出队列的元素的个数:");

scanf("%d",&m);

printf("出队列的元素为:");

for(i=1;i<=m;i++)

{

temp=DeQueue(Q,T);

if(T)

printf("%d ",temp);

}

print(Q);

break;

case 2:

return 0;

}

printf("0 -->入队列\n1 -->出队列\n2 -->退出\n请选择:");

scanf("%d",&n);

}

return 1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值