首页 > 代码库 > 47 _ 循环队列程序演示.swf
47 _ 循环队列程序演示.swf
通过上面的分析我们已经对循环队列很了解了,现在我们来学习下循环队列的实现形式
1、代码使用数组现实循环队列
#include<stdio.h> #include<malloc.h> #include <stdio.h> #include <stdlib.h> typedef struct Queue{ int * data;//存储的数据,指向一个数组 int font ;//队列数据删除 int rear;//队列数据的添加 }QUEUE ,*PQUEUE; /*初始化队列 6表示数组的长度*/ void initQueue( PQUEUE pQueue){ /* 队列有三个元素构成: 1、一个数组 2、font标志 3、rear标志 */ //首先让队列 执行一个地址 pQueue->data = http://www.mamicode.com/(int*)malloc(sizeof(int)*6);//该数组存储6个int类型的数据 pQueue->font = 0; pQueue->rear = 0; } /* 判断队列是否已经存储满了 */ bool full_quequ( PQUEUE pQueue){ if((pQueue->rear+1)%6 == pQueue->font){ return true; }else{ return false; } } /*对队列进行遍历*/ void traverse_queue(PQUEUE pQueue){ int index = pQueue->font; while(index != pQueue->rear){ printf("%d\n",pQueue->data[index]); index = (index+1)%6; } } /*向队列中存储数据*/ bool en_queue(PQUEUE pQueue ,int val){ if(full_quequ(pQueue)){ return false; }else{ //将输出放入数组对应的当前rear的位置 pQueue->data[pQueue->rear] = val; //rear向上移动 pQueue->rear = (pQueue->rear+1)%6;//数组的长度是6 return true; } } /*判断队列是否为空*/ bool isEmptyQueue(PQUEUE pQueue){ if(pQueue->font == pQueue->rear ){ return true; }else{ return false; } } /*删除队列中的元素,将删除的元素保存到pVal的值中*/ bool delete_quequ(PQUEUE pQueue ,int *pVal){ if(isEmptyQueue(pQueue)){ return false; }else{ //删除元素 *pVal = pQueue->data[pQueue->font]; //font指针上移动 pQueue->font = (pQueue->font +1) % 6; return true; } } int main(){ QUEUE s ; initQueue(&s); //数组的长度是6,一个空间存储rear,有效的空间只有5个,只能存储5个有效的数据 en_queue(&s,1); en_queue(&s,2); en_queue(&s,3); en_queue(&s,1); en_queue(&s,2); traverse_queue(&s); return 0; }
47 _ 循环队列程序演示.swf
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。