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

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

  1. 02 C语言使用队列实现缓存模块QueueBuffer

    02 C语言使用队列实现缓存模块QueueBuffer 作者 将狼才鲸 创建日期 2023-03-08 Gitee源码仓库地址:C语言使用队列实现缓存模块QueueBuffer 运行结果: jim@D ...

  2. c语言面向对象编程中的类_C ++中的面向对象编程

    c语言面向对象编程中的类 Object oriented programming, OOP for short, aims to implement real world entities like ...

  3. c语言建立队列(顺序队列、循化队列和链式队列)

    c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...

  4. C语言面向对象编程(四):面向接口编程

    Java 中有 interface 关键字,C++ 中有抽象类或纯虚类可以与 interface 比拟,C 语言中也可以实现类似的特性. 在面试 Java 程序员时我经常问的一个问题是:接口和抽象类有 ...

  5. C语言面向对象编程(二):继承详解

    在  C 语言面向对象编程(一)里说到继承,这里再详细说一下. C++ 中的继承,从派生类与基类的关系来看(出于对比 C 与 C++,只说公有继承): 派生类内部可以直接使用基类的 public .p ...

  6. C语言实现队列ADT(Queue ADT)接口COMP2521(附完整源码)

    C语言实现队列ADT接口COMP2521 QueueRep结构体定义 node结构体定义 实现以下5个接口 完整头文件 完整源文件 QueueRep结构体定义 typedef struct Queue ...

  7. C语言面向对象编程(六):配置文件解析

    在实际项目中,经常会把软件的某些选项写入配置文件. Windows 平台上的 INI 文件格式简单易用,本篇文章利用<C语言面向对象编程(五):单链表实现>中实现的单链表,设计了一个&qu ...

  8. G - 水陆距离 HihoCoder - 1478(广搜+队列先进先出性质)

    题目: 给定一个N x M的01矩阵,其中1表示陆地,0表示水域.对于每一个位置,求出它距离最近的水域的距离是多少. 矩阵中每个位置与它上下左右相邻的格子距离为1. Input 第一行包含两个整数,N ...

  9. java 168转换成861_java实验-java语言面向对象编程基础

    java实验-java语言面向对象编程基础 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 8.90 积分 广州大学学生实验报告广州大学学生实验报告 ...

  10. java链式结构_java语言实现队列顺序结构与链式结构

    本文主要向大家介绍了java语言实现队列顺序结构与链式结构,通过具体的内容向大家展示,希望对大家学习java语言有所帮助. 队列的顺序存储结构实现 public class Queue{ privat ...

最新文章

  1. plsql存储过程修改后怎么保存_证件照上传不成功,教你修改分辨率、调整照片大小...
  2. ibmm,让思维导图回归本质
  3. nfs:server is not responding,still trying 原因与解决方案
  4. C++ 11 新特性(十四)C++类
  5. python网络编程--UDP客户端
  6. Javascript之DOM(Element类型)
  7. ELF(Executable Linkable Format)文件存储格式
  8. 书籍分析实例:哈利波特的分词及人物关系
  9. Python Tricks(十六)—— list转换为str
  10. 双足机器人重心在头部_双足行走机器人及其重心调节装置制造方法及图纸
  11. c语言while的用法四种句型,有关while的几种用法
  12. vue+eleme upload 上传图片(含gif动图) canvas压缩,base64转blob对象
  13. html页面大于号,css中大于号()是什么意思?
  14. Python一小时开发彩色动态二维码生成器,并使用虚拟化境进行打包发布EXE程序。
  15. 免费下载shape_predictor_68_face_landmarks.dat
  16. CTS、CTS Verify、GTS测试以及GMS认证介绍
  17. 【全网最暴力解决方案】使用gdb调试时遭遇“Missing separate debuginfos, use: debuginfo-install glibc....”报错信息
  18. 深入理解AQS--jdk层面管程实现【管程详解的补充】
  19. 风云编程python基础语法(5)
  20. 生死学学习笔记(一)

热门文章

  1. access 数据更新update
  2. 计算摄影 | 摄像机成像原理及参数解析
  3. MATLAB黄金分割法标注最优点,matlab黄金分割法课程论文--.doc
  4. 通过PS营造艺术的碎片效果人像
  5. C语言用广播星历求卫星坐标,GPS广播星历计算卫星位置和速度-Read
  6. ContextCapture | 无人机倾斜摄影技术在农村不动产确权中的应用
  7. 无人机倾斜摄影技术在三维实景GIS的应用
  8. 抖音开放平台开发记录
  9. 开奖及送福利|周日晚八点,红包雨任性下
  10. “繁盛计划”,纾困中国餐饮难题背后的美团式解法