c语言实现通用数据结构(二):通用队列

来源:互联网 发布:淘宝天猫后台操作流程 编辑:程序博客网 时间:2024/05/01 18:29

     这是在通用链表的基础上实现的队列,关于链表的实现参见:http://blog.csdn.net/swwlqw/article/details/22498833。

     注意队列中只存储了指针,没有储存实际的数据。


     头文件 myQueue.h

#ifndef MYQUEUE_H_INCLUDED#define MYQUEUE_H_INCLUDED#include "myList.h"typedef MyList MyQueue;//创建队列MyQueue * createMyQueue();//释放队列void freeMyQueue(MyQueue * queue);//插入void myQueueAdd(MyQueue* const queue, void* const data);//删除void* myQueueRemove(MyQueue * const queue);//取得队头void* myQueueGetTop(const MyQueue * const queue);#endif // MYQUEUE_H_INCLUDED


源文件 myQueue.c

#include "myQueue.h"//创建队列MyQueue * createMyQueue(){    return createMyList();}//释放队列void freeMyQueue(MyQueue * queue){    freeMyList(queue);}//插入void myQueueAdd(MyQueue* const queue, void* const data){    myListInsertDataAtLast(queue, data);}//删除void* myQueueRemove(MyQueue * const queue){    return myListRemoveDataAtFirst(queue);}//取得队头void* myQueueGetTop(const MyQueue * const queue){    return myListGetDataAtFirst(queue);}



测试文件 main.c

/**************************** File main.c*** test for MyQueue**************************/#include <stdio.h>#include <stdlib.h>#include "myQueue.h"typedef struct a{    int i;    char c;} A;int main(){    const int S =10;    //创建并初始化数据    A * data= malloc(sizeof(A)*S);    for (int i=0; i< S; i++)    {        data[i].i=i;        data[i].c=(char)('A'+i);    }    //创建队列    MyQueue * queue= createMyQueue();    //插入数据    myQueueAdd(queue, &data[0]);    myQueueAdd(queue, &data[2]);    myQueueAdd(queue, &data[6]);    //测试删除    while(myListGetSize(queue))    {        A * pp = myQueueRemove(queue);        printf("%d[%c] ", pp->i, pp->c);    }    puts("");    //释放链表    freeMyQueue(queue);    //释放数据    free(data);    return 0;}




0 0