循环队列的操做

循环队列的操做主要包括出队,入队数组

code:函数

#include<stdio.h>spa

#include<malloc.h>指针

struct queuecode

{队列

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

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

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 ;

}

相关文章
相关标签/搜索