循環隊列的操做

循環隊列的操做主要包括出隊,入隊數組

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 ;

}

相關文章
相關標籤/搜索