博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
队列顺序存储 - 设计与实现 - API函数
阅读量:4940 次
发布时间:2019-06-11

本文共 2230 字,大约阅读时间需要 7 分钟。

队列是一种特殊的线性表

队列仅在线性表的两端进行操作
队头(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 
#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 
#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;}
有关顺序存储表的相关内容,请參看我的还有一篇博文:

具体project代码:

转载于:https://www.cnblogs.com/claireyuancy/p/7224642.html

你可能感兴趣的文章
h.264 率失真优化
查看>>
【转】拓扑排序入门
查看>>
Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别
查看>>
How to install 64-bit Google Chrome 28+ on 64-bit RHEL/CentOS 6 or 7
查看>>
搭建LNAMP环境(三)- 源码安装Apache2.4
查看>>
linux --> fork()详解
查看>>
Spring注解 开发
查看>>
#!/bin/bash(转)
查看>>
BZOJ4589 Hard Nim(博弈+FWT)
查看>>
hdu 2473 Junk-Mail Filter 并查集删点,模板题
查看>>
【Maps】【搜狗】
查看>>
Linux命令详解-whatis
查看>>
分组求和
查看>>
eclipse 忽略 target 设置
查看>>
Reptile:requests代理IP
查看>>
HTML5应用缓存与Web Workers
查看>>
【并行计算-CUDA开发】英伟达硬件解码器分析
查看>>
Axure原型制作规范
查看>>
华阳彩票渠道管理平台
查看>>
大四中软实习笔记20130301
查看>>