循环队列的操作

循环队列的操作主要包括出队,入队

code:

#include<stdio.h>

#include<malloc.h>

struct queue

{

int *p;//指向数组的指针 

int front;//队列的第一个下标 

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

};

void init_queue(struct queue *qq);//队列初始化函数

void in_queue(struct queue *qq,int val);//入队函数

bool full_queue(struct queue *qq);//判断队列是否为满函数

void out_queue(struct queue *qq);//出队函数

bool empty_queue(struct queue *qq);//判断队列是否为空函数

void traverse_queue(struct queue *qq);//遍历输出队列函数 

int main()

{

    struct queue ss;

init_queue(&ss);

in_queue(&ss,1);

in_queue(&ss,2);

in_queue(&ss,3);

in_queue(&ss,4);

in_queue(&ss,5);

in_queue(&ss,6);

in_queue(&ss,7);

traverse_queue(&ss);

out_queue(&ss);

out_queue(&ss);

traverse_queue(&ss);

void init_queue(struct queue *qq)//队列的初始化就是将front,rear下标置0 

{

qq->p=(int *)malloc(sizeof(int)*6);//将p指向有5个整形元素的数组

 

qq->front=0;

qq->rear=0; 

}

bool full_queue(struct queue *qq)

{

if((qq->rear+1)%6==qq->front)

return true;

else

return false;

}

void in_queue(struct queue *qq,int val)

{

if(full_queue(qq))

{

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

}

else

{

qq->p[qq->rear]=val;

   qq->rear=(qq->rear+1)%6;

}

}

void traverse_queue(struct queue *qq)

{

int i=qq->front;

while(i!=qq->rear)

{

printf("%d ",qq->p[i]);

i=(i+1)%6;

}

printf("\n");

}

bool empty_queue(struct queue *qq)

{

if(qq->front==qq->rear)

return true;

else

return false;

}

void out_queue(struct queue *qq)

{

if(empty_queue(qq))

{

printf("队列是空!\n");

}

else

{

qq->front=(qq->front+1)%6;

}

return ;

}

转载于:https://my.oschina.net/u/553254/blog/72310

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值