这次实现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. kafka异步推送设置重试_一篇文章了解 Kafka 幂等性的原理及实践
  2. 一个低级错误,关于timer
  3. 硕士本科论文通过matlab出仿真图
  4. 加ing形式的单词有哪些_高中英语人教版必修5知识研习Unit4重点单词treat
  5. [转载] 人工智能:一种现代方法——第1章 绪论
  6. 如何在新浪博客中添加JavaScript代码
  7. 分享25个新鲜出炉的 Photoshop 高级教程
  8. html5 弹性布局
  9. python单元测试的应用_单元测试pythongui应用程序的推荐方法是什么?
  10. 二、前端pink老师的CSS定位学习笔记(超详细,简单易懂)
  11. FFmpeg滤镜代码级分析
  12. 用Javascript读取CheckBox数组的值
  13. 黑马程序员SpringBoot2全套教程学习笔记
  14. 第2章-系统控制原理 -> 李雅普诺夫稳定性分析
  15. photoshop图片放大不失真
  16. zigbee三种组网形式及终端、路由、协调器理解
  17. 反爬虫原理与绕过实战
  18. 平板电脑3C认证的重要性,为什么要3C认证?Ⓠ欢Ⓠ迎3来8网3赚5喔0
  19. 智慧门户、信创门户、国产门户、数字化门户,如何构建出七大特色亮点?
  20. 马云接受外媒专访:中国的五大银行想杀了我

热门文章

  1. sd卡与FAT32文件系统
  2. STM32单片机定时器
  3. 机器学习 (十三) 电商O2O优惠券使用预测-1
  4. android优酷视频黑屏,为什么优酷视频黑屏?优酷视频黑屏的原因与解决方法
  5. 正态分布是离散分布还是连续分布_连续性随机变量与正态分布——投资分析必备知识...
  6. UVA489 刽子手的游戏 Hangman Judge
  7. 从嗤之以鼻到“奇迹” 前淘宝工程师详解12306技术
  8. 华硕笔记本电脑win10系统一键重装教程分享
  9. linux清除回收站权限错误,在Ubuntu 14.04 中修复无法清空回收站的问题
  10. Python模拟轮盘抽奖游戏