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

本文介绍了一种在C语言中基于通用链表实现的队列数据结构。队列仅存储指针而不存储实际数据。提供了创建队列、释放队列、插入元素、删除元素和获取队头元素的函数实现。通过示例代码展示了如何使用这些函数进行操作,并给出了测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是在通用链表的基础上实现的队列,关于链表的实现参见:http://blog.youkuaiyun.com/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 #include #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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值