赞
踩
2.队列的顺序存储代码
要依赖于之前的文章中的seqlist_02.h和seqlist_02.cpp
seqqueue.h如下:
- #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代码如下:
- #include"seqqueue.h"
- #include"seqlist_02.h"
-
-
- //队列本身是一种线性表,要使用我们之前写的线性表的顺序存储代码
- //创建队列
-
- SeqQueue* SeqQueue_Create(int capacity)
- {
- return SeqList_Create(10);
- }
-
- //销毁 队列
- 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,SeqList_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);
- }
测试代码如下:
- #include"seqqueue.h"
- #include<iostream>
- using namespace std;
- //自己定义业务结点
- typedef struct tag_Student
- {
- char name[30];
- int age;
- }Student;
- int main(int argc, char *argv[])
- {
- //开始测试程序
- Student t1;
- Student t2;
- Student t3;
- t1.age = 41;
- t2.age = 42;
- t3.age = 43;
- SeqQueue *hander = NULL;
- hander = SeqQueue_Create(10);
- //追加三个元素
- SeqQueue_Append(hander,(void*)&t1);
- SeqQueue_Append(hander, (void*)&t2);
- SeqQueue_Append(hander, (void*)&t3);
- //获取元素并且打印
- printf("get head element[%d]\n", ((Student *)(SeqQueue_Header(hander)))->age);
- while (SeqQueue_Length(hander) >1)
- {
- Student*tmp = (Student*)SeqQueue_Retrieve(hander);
- printf("value %d\n",tmp->age);
- }
- printf("capacity is[%d]\n", SeqQueue_Capacity(hander));
- SeqQueue_Clear(hander);
- printf("length is[%d]\n", SeqQueue_Length(hander));
- SeqQueue_Destroy(hander);
- return 0;
- }
输出结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。