临海建设规划局网站,网站建设大客户沟通技巧,wordpress 首页调用最新文章,网站seo的方法目录
队列知识点#xff1a;
循环队列#xff1a;
队列的操作#xff1a;
创建队列#xff1a;
判断队列是否已满#xff1a;
入队#xff1a;
遍历队列#xff1a;
判断队列是否为空#xff1a;
出队#xff1a; 这篇笔记是根据郝斌老师的上课讲义整理而得
循环队列
队列的操作
创建队列
判断队列是否已满
入队
遍历队列
判断队列是否为空
出队 这篇笔记是根据郝斌老师的上课讲义整理而得
队列知识点
定义一种可以实现先进先出的存储结构分为链式队列链表实现和静态队列数组实现。
循环队列 1. 静态队列为什么必须是循环队列 front指向队列第一个元素 rear指向队列最后一个元素的下一个元素 2. 循环队列需要几个参数确定 两个参数不同场合有不同的含义 3. 循环队列各个参数的含义 1 队列初始化 front 和rear 值为零 2 队列非空 front代表的是队列的第一个元素 rear代表队列最后一个有效元素的下一个元素 3 队列空 front rear 但不一定为零 4. 循环队列入队伪算法讲解 1. 将要存放的值放入r所在的位置 2. r (r1)%数组的长度 5. 循环队列出队伪算法讲解 f (f1)%数组的长度 6. 如何判断循环队列是否为空 如果front与rear的值相等则该队列就一定为空 7. 如何判断循环队列是否已满 两种方式1.多增加一个标识符参数 2. if((r1)%数组长度f) 已满 else 未满
队列的操作
#include stdio.h
#include stdlib.h
#include malloc.htypedef struct queue
{int * pBase;int front;int rear;
}QUEUE;void init(QUEUE *);
bool en_queue(QUEUE*, int val);
void traverse_queue(QUEUE*);
bool full_queue(QUEUE*);
bool out_queue(QUEUE*,int*);
bool empty_queue(QUEUE *);
创建队列
void init(QUEUE *pQ)
{pQ-pBase (int *)malloc(sizeof(int) * 6);//队列空间大小为6个int元素pQ-front 0;pQ-rear 0;
}
判断队列是否已满
bool full_queue(QUEUE * pQ)
{if ( (pQ-rear 1) % 6 pQ-front )return true;elsereturn false;
}
入队
bool en_queue(QUEUE * pQ, int val)
{if ( full_queue(pQ) ){return false;}else{pQ-pBase[pQ-rear] val;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);return;
}判断队列是否为空
bool emput_queue(QUEUE * pQ)
{if ( pQ-front pQ-rear )return true;elsereturn false;
}
出队
bool out_queue(QUEUE * pQ, int * pVal)
{if ( emput_queue(pQ) ){return false;}else{*pVal pQ-pBase[pQ-front];pQ-front (pQ-front1) % 6;return true;}
}