c语言面向对象:队列 (先进先出,后进先出)

本文介绍了一种基于ZListClass实现FIFO(先进先出)和LIFO(后进先出)队列的方法。通过具体代码展示了如何创建、初始化、添加元素及移除元素等操作。

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

这次实现FIFO和LIFO。有了ZListClass列表类,实现队列类就很简单了。调用ZListClass的方法就能实现了。

先进先出队列
ZFifoClass.h
/****************************
* Black Spoor               *
****************************/
#ifndef _BLACKSPOOR_ZFIFOCLASS_H_
#define _BLACKSPOOR_ZFIFOCLASS_H_
#include "ZListClass.h"
typedef struct ZFifoClass
{
 ZListClass * fifo;
 void (*Push)(struct ZFifoClass *, void *);
 void * (*Pop)(struct ZFifoClass *);
 void (*Init)(struct ZFifoClass *);
 void (*Dispose)(struct ZFifoClass *);
}ZFifoClass;
extern ZFifoClass * ZFifoClassCreate(void);
#endif

ZFifoClass.c
/****************************
* Black Spoor               *
****************************/

#include "ZFifoClass.h"
static void Init(struct ZFifoClass * stu, void * tag);
static void Dispose(struct ZFifoClass * stu);
static void Push(struct ZFifoClass *, void *);
static void * Pop(struct ZFifoClass *);
static void Init(struct ZFifoClass * stu, void * tag)
{
 stu->fifo = ZListClassCreate();
 stu->fifo->Init(stu->fifo);
}
static void Dispose(struct ZFifoClass * stu)
{
 stu->fifo->Dispose(stu->fifo);
 free(stu);
}
static void Push(struct ZFifoClass * stu, void * content)
{
 ZListItemClass * zinsertitem = ZListItemClassCreate();
 zinsertitem->content = content;
 stu->fifo->PushItem(stu->fifo,zinsertitem);
}
static void * Pop(struct ZFifoClass * stu)
{
 return stu->fifo->PopItem(stu->fifo);
}

ZFifoClass * ZFifoClassCreate(void)
{
 ZFifoClass * stu = (ZFifoClass *)malloc(sizeof(ZFifoClass));
 stu->Init = Init;
 stu->Dispose = Dispose;
 stu->Push = Push;
 stu->Pop = Pop;
 return stu;
}

后进先出队列
ZLifoClass.h
/****************************
* Black Spoor               *
****************************/
#ifndef _BLACKSPOOR_ZLIFOCLASS_H_
#define _BLACKSPOOR_ZLIFOCLASS_H_
#include "ZListClass.h"
typedef struct ZLifoClass
{
 ZListClass * fifo;
 void (*Push)(struct ZLifoClass *, void *);
 void * (*Pop)(struct ZLifoClass *);
 void(*Init)(struct ZLifoClass *);
 void(*Dispose)(struct ZLifoClass *);
}ZLifoClass;
extern ZLifoClass * ZLifoClassCreate(void);
#endif

ZLifoClass.c
/****************************
* Black Spoor               *
****************************/

#include "ZLifoClass.h"
static void Init(struct ZLifoClass * stu, void * tag);
static void Dispose(struct ZLifoClass * stu);
static void Push(struct ZLifoClass *, void *);
static void * Pop(struct ZLifoClass *);
static void Init(struct ZLifoClass * stu, void * tag)
{
 stu->fifo = ZListClassCreate();
 stu->fifo->Init(stu->fifo);
}
static void Dispose(struct ZLifoClass * stu)
{
 stu->fifo->Dispose(stu->fifo);
 free(stu);
}
static void Push(struct ZLifoClass * stu, void * content)
{
 ZListItemClass * zinsertitem = ZListItemClassCreate();
 zinsertitem->content = content;
 stu->fifo->AppendItem(stu->fifo, zinsertitem);
}
static void * Pop(struct ZLifoClass * stu)
{
 return stu->fifo->PopItem(stu->fifo);
}

ZLifoClass * ZLifoClassCreate(void)
{
 ZLifoClass * stu = (ZLifoClass *)malloc(sizeof(ZLifoClass));
 stu->Init = Init;
 stu->Dispose = Dispose;
 stu->Push = Push;
 stu->Pop = Pop;
 return stu;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值