队列顺序存储 - 设计与实现 - API函数
来源:互联网 发布:seo关键词价格查询 编辑:程序博客网 时间:2024/05/01 08:42
队列是一种特殊的线性表
队列仅在线性表的两端进行操作
队头(Front):取出数据元素的一端
队尾(Rear):插入数据元素的一端
队列不允许在中间部位进行操作!
queue常用操作
销毁队列
清空队列
进队列
出队列
获取队头元素
获取队列的长度
队列也是一种特殊的线性表;可以用线性表顺序存储来模拟队列。
主要代码:
// seqqueue.h// 顺序存储队列API声明#ifndef _MY_SEQQUEUE_H_#define _MY_SEQQUEUE_H_typedef void SeqQueue;// 创建队列SeqQueue* SeqQueue_Create(int capacity);// 销毁队列void SeqQueue_Destroy(SeqQueue* queue);// 清空队列void SeqQueue_Clear(SeqQueue* queue);// 入队列int SeqQueue_Append(SeqQueue* queue, void* item);// 出队列void* SeqQueue_Retrieve(SeqQueue* queue);// 获取对头元素void* SeqQueue_Header(SeqQueue* queue);// 获取队列长度int SeqQueue_Length(SeqQueue* queue);// 获取队列容量int SeqQueue_Capacity(SeqQueue* queue);#endif //_MY_SEQQUEUE_H_
// seqqueue.cpp// 顺序存储队列API实现// 调用了顺序存储表的API#include <stdio.h>#include "seqqueue.h"#include "seqlist.h"// 创建队列相当于创建一个链表SeqQueue* SeqQueue_Create(int capacity){return SeqList_Create(capacity);}// 销毁队列相当于销毁链表void SeqQueue_Destroy(SeqQueue* queue){SeqList_Destroy(queue);return;}// 清空队列相当于清空链表void SeqQueue_Clear(SeqQueue* queue){SeqList_Clear(queue);return;}// 入队列相当于在链表尾部插入元素int SeqQueue_Append(SeqQueue* queue, void* item){return SeqList_Insert(queue, item, SeqList_Length(queue));}// 出队列相当于删除链表0号位置的元素void* SeqQueue_Retrieve(SeqQueue* queue){return SeqList_Delete(queue, 0);}// 获取对头元素相当于获取链表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);}
// main.cpp// 顺序存储队列API的测试程序#include <stdio.h>#include "seqqueue.h"const int maxn = 10;void play(){int i = 0, a[maxn];SeqQueue *sq = NULL;for (i = 0; i < maxn; ++i) {a[i] = i + 1;}sq = SeqQueue_Create(20); // 创建队列// 入队列for (i = 0; i < maxn; ++i) {SeqQueue_Append(sq, &a[i]);}// 获取队列属性printf("header: %d\n", *((int *)SeqQueue_Header(sq)));printf("length: %d\n", SeqQueue_Length(sq));printf("capacity: %d\n", SeqQueue_Capacity(sq));// 出队列while (SeqQueue_Length(sq)) {int tmp = *((int *)SeqQueue_Retrieve(sq));printf("%d\n", tmp);}SeqQueue_Destroy(sq);}int main(){play();return 0;}
有关顺序存储表的相关内容,请参看我的另一篇博文:线性表的顺序存储设计和实现 - API函数实现
详细工程代码:Github
0 0
- 队列顺序存储 - 设计与实现 - API函数
- 队列链式存储 - 设计与实现 - API函数
- 栈的顺序存储 - 设计与实现 - API实现
- 线性表顺序存储设计与实现_api函数实现
- 线性表的顺序存储设计和实现 - API函数实现
- 队列的顺序存储API
- 顺序存储队列实现
- 队列顺序循环存储实现
- 队列的顺序存储实现
- [Java算法分析与设计]顺序循环队列的实现
- 队列的链式存储与顺序存储
- 【无中生有】---10---API接口日志存储设计与实现设计
- 线性表链式存储设计与实现 - API实现
- 线性表顺序存储设计与实现_框架搭建
- 循环队列 顺序存储 C实现
- 队列的顺序存储C实现
- 队列(顺序存储)C++模板实现
- 循环(顺序)队列存储实现
- cocos2d-x游戏实例(15)-纵版射击游戏(2)
- xp---迁VS2013
- Android端Json封装成类
- UITableViewCell中的imageView固定大小
- datatable的例子使用--增加删除修改查询
- 队列顺序存储 - 设计与实现 - API函数
- 无限互联奖学金文章连载1
- Win7 安装Oracle问题
- java多线程及并发
- iOS GCD实现发送验证码倒计时
- JAVA大数处理(BigInteger,BigDecimal)
- 仿QQ空间客户端-状态栏沉浸
- django时间查询
- MySQL索引学习整理