更改网站备案负责人,做网站购买服务器吗,英文企业网站源码,网站建设职位名称一、定义一种可以实现“先进先出”的存储结构。二、分类1、链式队列#xff1a;用链表实现。2、静态队列#xff1a;用数组实现。静态队列通常都必须是循环队列。3、循环队列(1)循环队列需要几个参数来确定#xff1f;需要2个参数来确定#xff1a;front、rear(2)循环队列各…一、定义一种可以实现“先进先出”的存储结构。二、分类1、链式队列用链表实现。2、静态队列用数组实现。静态队列通常都必须是循环队列。3、循环队列(1)循环队列需要几个参数来确定需要2个参数来确定front、rear(2)循环队列各个参数的含义这2个参数在不同场合有不同的含义。1)队列初始化front和rear的值都是0。2)队列非空front指向队列的第一个元素rear指向队列的最后一个有效元素的下一个元素。3)队列空front和rear的值相等但不一定是0。(3)循环队列入队伪算法讲解a.将值存入r所代表的位置b.错误的写法rr1正确的写法r(r1)%数组的长度(4)循环队列出队伪算法讲解f(f1)%数组的长度(5)如何判断循环队列是否为空如果front与read的值相等则该循环队列一定为空。(6)如何判断循环队列是否已满2种方式a.多增加一个标识参数用来表示是满还是空(一般不用此方式)b.少用一个元素(通常使用此方式)如果(r1)%数组长度f则表示循环队列已满。例1#include #include #include typedef struct Queue{int *pBase; // 数组int front;int rear;} QUEUE;void init(QUEUE *);bool en_queue(QUEUE *, int); // 入队往哪个队列放什么值void traverse_queue(QUEUE *); // 遍历bool full_queue(QUEUE *); // 判断队列是否已满bool out_queue(QUEUE *, int *); // 出队并把出队的值保存起来int main(void){QUEUE Q;int val 0;init(Q);en_queue(Q, 1);en_queue(Q, 2);en_queue(Q, 3);en_queue(Q, 4);en_queue(Q, 5);en_queue(Q, 6);en_queue(Q, 7);en_queue(Q, 8);traverse_queue(Q);if(out_queue(Q, val)){printf(队列出队成功出队的元素是%d\n, val);}else{printf(出队失败!\n);}traverse_queue(Q);return 0;}void init(QUEUE *pQ){pQ-pBase (int *)malloc(sizeof(int)*6);pQ-front 0;pQ-rear 0;}bool full_queue(QUEUE *pQ){if((pQ-rear1)%6 pQ-front){return true;}else{return false;}}bool en_queue(QUEUE *pQ, int val){if(full_queue(pQ)){return false;}else{pQ-pBase[pQ-rear] val; // 入队的值要存入rear所在的位置pQ-rear (pQ-rear1)%6;return true;}}void traverse_queue(QUEUE *pQ){int i pQ-front;while(i ! pQ-rear){printf(%d , pQ-pBase[i]);i (i1)%6;}printf(\n);}bool empty_queue(QUEUE *pQ){if(pQ-front pQ-rear){return true;}else{return false;}}bool out_queue(QUEUE *pQ, int *pVal){if(empty_queue(pQ)){return false;}else{*pVal pQ-pBase[pQ-front];pQ-front (pQ-front1)%6;return true;}}循环队列程序三、具体应用所有和时间有关的操作都与队列有关。