数据结构封装之《SeqQueue顺序式队列》
2017-08-29 13:43
141 查看
说明:
本队列是通过顺序表实现的;这里采用了代码复用的方法,即使用了SeqList顺序表,详见 数据结构封装之 《SeqList顺序表》;
下面将给出该数据结构的代码,每个函数的结构分析 ,以及个别主要函数的汇编分析
代码:
SeqQueue.h#ifndef _SEQQUEUE_H_ #define _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
SeqQueue.c
#include "SeqList.h" #include "SeqQueue.h" SeqQueue* SeqQueue_Create(int capacity) // O(1) { return SeqList_Create(capacity); } void SeqQueue_Destroy(SeqQueue* queue) // O(1) { SeqList_Destroy(queue); } void SeqQueue_Clear(SeqQueue* queue) // O(1) { SeqList_Clear(queue); } int SeqQueue_Append(SeqQueue* queue, void* item) // O(1) { return SeqList_Insert(queue, item, SeqList_Length(queue)); } void* SeqQueue_Retrieve(SeqQueue* queue) // O(n) { return SeqList_Delete(queue, 0); } void* SeqQueue_Header(SeqQueue* queue) // O(1) { return SeqList_Get(queue, 0); } int SeqQueue_Length(SeqQueue* queue) // O(1) { return SeqList_Length(queue); } int SeqQueue_Capacit 981c y(SeqQueue* queue) // O(1) { return SeqList_Capacity(queue); }
main.c
#include <stdio.h> #include <stdlib.h> #include "SeqQueue.h" int main(int argc, char *argv[]) { SeqQueue* queue = SeqQueue_Create(20); int a[10] = {0}; int i = 0; for(i=0; i<10; i++) { a[i] = i + 1; SeqQueue_Append(queue, a + i); } printf("Header: %d\n", *(int*)SeqQueue_Header(queue)); printf("Length: %d\n", SeqQueue_Length(queue)); printf("Capacity: %d\n", SeqQueue_Capacity(queue)); while( SeqQueue_Length(queue) > 0 ) { printf("Retrieve: %d\n", *(int*)SeqQueue_Retrieve(queue)); } SeqQueue_Destroy(queue); return 0; }
函数结构分析:
1.SeqQueue_Create2.SeqQueue_Destroy
3.SeqQueue_Clear
4.SeqQueue_Append
5.SeqQueue_Retrieve
6.SeqQueue_Header
7.SeqQueue_Length
8.SeqQueue_Capacity
汇编分析:
main1.SeqQueue_Create
2.SeqQueue_Destroy
3.SeqQueue_Append
4.SeqQueue_Retrieve
5.SeqQueue_Header
6.SeqQueue_Length
7.SeqQueue_Capacity
相关文章推荐
- C++与C#对常用数据结构封装的对比(STL vs System.Collections.Generic)
- 封装TableView有可能用到的数据结构和UITableViewCell的一个继承类
- 数据结构封装之《SeqList顺序栈》
- JS高级-数据结构的封装
- 【算法和数据结构】线性表(三)栈的定义和封装
- 数据结构封装之《LinkQueue链式队列》
- 封装c++与matlab引擎交互的数据结构:行优先矩阵类
- 3D游戏引擎底层数据结构的封装之Stack
- C++与C#对常用数据结构封装的对比(STL vs System.Collections.Generic)
- 数据结构封装之《LinkQueue2.0改进链式队列》
- 封装图这一种数据结构
- 【转载】C++与C#对常用数据结构封装的对比(STL vs System.Collections.Generic)
- 数据结构封装之《LGraph邻接表式图》
- 3D游戏引擎底层数据结构的封装之List
- 3D游戏引擎底层数据结构的封装之Stack
- 数据结构-有头双向循环链表2(封装)
- week03_python内置数据结构__封装、解构
- 3D游戏引擎底层数据结构的封装之List
- 二维表的数据可以被封装成的数据结构(集合)
- non object数据结构对象封装和序列化