|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1、基本概念
队列(queue)是一种 特殊的线性表;
队列仅在线性表的两端进行操作;
队头(Front):取出数据元素的一端;
队尾(Rear): 插入数据元素的一端。
队列不允许在中间位置插入元素或其他操作。
队列是只允许在一端进行插入操作,在另一端进行删除操作的线性表。是一种先进先出的线性表(FIFO).
常用操作:
创建队列;
销毁队列;
清空队列;
进队列;
出队列;
获取队头元素;
获取队列的长度。
2、队列的线性存储
同样由于队列是一种特殊的线性表,其实现也是可以通过线性表来完成的。
通过线性表的顺序存储来实现队列的顺序 存储。
- // 创建一个队列 相当于 创建一个线性表
- SeqQueue* SeqQueue_Create(int capacity)
- {
- return SeqList_Create(capacity);
- }
- // 销毁一个队列 相当于 销毁一个线性表
- void SeqQueue_Destroy(SeqQueue* queue)
- {
- SeqList_Destroy(queue);
- }
- // 清空一个队列 相当于 清空一个线性表
- void SeqQueue_Clear(SeqQueue* queue)
- {
- SeqList_Clear(queue);
- }
- // 入队 相当于 向线性表添加一个元素
- // 头插、尾插都可以,这里选择尾插法
- int SeqQueue_Append(SeqQueue* queue, void* item)
- {
- return SeqList_Insert(queue, item, SeqQueue_Length(queue));
- }
- // 出队 相当于 删除链表头部元素
- void* SeqQueue_Retrieve(SeqQueue* queue)
- {
- return SeqList_Delete(queue, 0);
- }
- // 获取队列头部元素 相当于 获取线性表头部元素
- void* SeqQueue_Header(SeqQueue* queue)
- {
- return SeqList_Get(queue, 0);
- }
- // 获取队列长度 相当于 获取线性表长度
- int SeqQueue_Length(SeqQueue* queue)
- {
- return SeqList_Length(queue);
- }
- // 获取队列容量 相当于 获取线性表容量
- int SeqQueue_Capacity(SeqQueue* queue)
- {
- return SeqList_Capacity(queue);
- }
复制代码
3、队列的链式存储
和栈类似,队列的链式存储同样涉及到 ① 队列的业务结点向线性表业务结点的转换 ② 结点的生命周期的管理。
完整代码:
队列的顺序存储.zip
(2.72 KB, 下载次数: 5)
队列的链式存储.zip
(2.98 KB, 下载次数: 6)
|
|