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

这次实现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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值