数据结构 线性表链式队列
2016-07-29 10:35
323 查看
//线性表链表队列函数声明 #ifndef _MY_LinkQueue_H_ #define _MY_LinkQueue_H_ typedef void LinkQueue; //创建线性表链表队列 LinkQueue* LinkQueue_Create(); //销毁线性表链表队列 int LinkQueue_Destroy(LinkQueue* queue); //清空线性表链表队列 int LinkQueue_Clear(LinkQueue* queue); //线性表链表队列队尾添加元素 int LinkQueue_Append(LinkQueue* queue, void* item); //线性表链表队列队头删除元素 void* LinkQueue_Retrieve(LinkQueue* queue); //获取线性表链表队列队头元素 void* LinkQueue_Header(LinkQueue* queue); //获取线性表链表队列长度 int LinkQueue_Length(LinkQueue* queue); #endif //_MY_LinkQueue_H_
//链表队列代码实现 #include<stdio.h> #include<stdlib.h> #include<string.h> #include"LinkList.h" #include"LinkQueue.h" typedef struct _TLinkQueue{ LinkNode node; void * item; }TLinkQueue; //创建线性表链表队列 LinkQueue* LinkQueue_Create(){ return LinkList_Create(); } //销毁线性表链表队列 int LinkQueue_Destroy(LinkQueue** queue){ if (queue!=NULL) { //清空链表 LinkQueue_Clear(*queue); } //销毁链表 return LinkList_Destroy(queue); } //清空线性表链表队列 int LinkQueue_Clear(LinkQueue* queue){ //弹出链表中的所有元素 while (LinkQueue_Length(queue) > 0){ LinkQueue_Retrieve(queue); } //清空链表 return LinkList_Clear(queue); } //线性表链表队列队尾添加元素 int LinkQueue_Append(LinkQueue* queue, void* item){ int ERRO_MSG = 0; //构建链表节点对象 TLinkQueue * tqueue = (TLinkQueue *)malloc(sizeof(TLinkQueue)); if (tqueue==NULL) { ERRO_MSG = -1; printf("分配内存失败!\n"); } tqueue->item = item; //队尾添加一个元素 ERRO_MSG=LinkList_Insert(queue, (LinkNode *)tqueue, LinkList_Length(queue)); return ERRO_MSG; } //线性表链表队列队头删除元素 void* LinkQueue_Retrieve(LinkQueue* queue){ void *res = NULL; //从队头删除元素 TLinkQueue * tqueue = (TLinkQueue *)LinkList_Delete(queue, 0); if (tqueue==NULL) { return NULL; } res = tqueue->item; //释放内存 free(tqueue); tqueue = NULL; return res; } //获取线性表链表队列队头元素 void* LinkQueue_Header(LinkQueue* queue){ TLinkQueue * tqueue = (TLinkQueue *)LinkList_Get(queue,0); if (tqueue==NULL) { return NULL; } return tqueue->item; } //获取线性表链表队列长度 int LinkQueue_Length(LinkQueue* queue){ return LinkList_Length(queue); }
#include<stdio.h> #include<stdlib.h> #include<string.h> #include"LinkQueue.h" void Test(){ int i = 0; //创建队列句柄 LinkQueue *queue = LinkQueue_Create(); //添加队列元素 for ( i = 0; i < 10; i++) { LinkQueue_Append(queue, (void *)(i + 1)); } //获取队列长度 printf("队列的长度是%d\n", LinkQueue_Length(queue)); //删除一个元素 printf("被删除的元素是%d\n", (int)LinkQueue_Retrieve(queue)); //获取队列长度 printf("队列的长度是%d\n", LinkQueue_Length(queue)); //清空队列 LinkQueue_Clear(queue); //获取队列长度 printf("清空队列的长度是%d\n", LinkQueue_Length(queue)); //销毁队列 LinkQueue_Destroy(&queue); } void main(){ Test(); system("pause"); }
![](https://images2015.cnblogs.com/blog/644743/201607/644743-20160729103344091-347609739.png)
相关文章推荐
- 数据结构 学习笔记之:线性表——顺序表、静态链表、动态链表(单链表、双链表、单循环链表、双循环链表,链式栈、链式队列)——基础概念大扫盲!
- 【ShancoLove】带你看数据结构——第三课:线性表链式结构(单链表)
- 【ShancoLove】带你看数据结构——第四课:线性表链式结构(循环链表)
- [数据结构]线性结构——队列
- 数据结构和算法学习(一)线性表、栈和队列
- 线性数据结构(线性表、链表、栈、队列、散列表)
- 基础数据结构--线性表链式实现
- 数据结构-线性结构之队列
- 【数据结构练习】基于线性结构的队列
- 【数据结构】线性循环队列
- 数据结构全攻略--线性结构不攻自破之栈和队列
- 大话数据结构-时间复杂度,线性表,栈,队列
- 数据结构 学习笔记(三):线性结构:堆栈,队列,表达式求值,多项式加法运算
- 数据结构_线性结构_栈与队列
- 【算法和数据结构】_4_线性结构_队列
- 数据结构---线性表链式实现
- 数据结构_线性结构_栈与队列
- 第12周 数据结构和算法 线性表-7 队列 插入、删除
- 数据结构-线性结构-队列
- 《数据结构》复习之线性表(栈和队列)