FIFO.h (接口)

 #include "Item.h"
#include <stdlib.h> typedef struct STACKnode *link;
struct STACKnode
{
Item item;
link next;
}; void QUEUEinit(int);
int QUEUEempty(void);
void QUEUEput(Item);
Item QUEUEget(void);
void QUEUEerror(void);

Item.h (自定义类型)

1 typedef char Item;

FIFO.c (接口实现)

 static Item *q;
static int N, head, tail; void QUEUEinit(int maxN)
{
q=malloc((maxN+)*sizeof(Item));
N=maxN+;
head=N;
tail=;
}
int QUEUEempty(void)
{
return head%N==tail;
}
void QUEUEput(Item item)
{
if(tail==head-)
QUEUEerror();
q[tail++]=item;
tail=tail%N;
}
Item QUEUEget(void)
{
if(QUEUEempty())
QUEUEerror();
head=head%N;
return q[head++];
}
void QUEUEerror(void)
{
printf("队列为空或已满");
exit();
}

main.c (主程序)

 #include <stdio.h>
#include "FIFO.h" int main(void)
{
int N;
printf("输入字符串大小:");
if(scanf("%d", &N))
QUEUEinit(N);
getchar();
printf("输入字符串\n");
while((N=getchar())!=EOF)
{
if(N=='*')
{
putchar(QUEUEget());
putchar('\n');
}
else
QUEUEput(N);
} return ;
}

FIFO队列 ADT接口 数组实现的更多相关文章

  1. 随机队列 ADT接口 数组实现

    Random queue ADT接口 RANDOM.h #include <stdlib.h> #include "Item.h" #include <time. ...

  2. 双端队列 ADT接口 数组实现

    Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" void DEQUEUEinit(int); ...

  3. FIFO队列 ADT接口 链表实现

    FIFO.h (接口) #include "Item.h" void QUEUinit(int); int QUEUempty(void); void QUEUput(Item); ...

  4. 双端队列 ADT接口 链表实现

    Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" typedef struct DEQUEUEn ...

  5. LIFO栈 ADT接口 数组实现

    LIFO 栈结构 typedef int ElemenType; struct seqStack{ ElemeType data[MaxSize]; int top; }; typedef struc ...

  6. 文件 FIFO队列

    <?php /** * Filefifo.php 文件型FIFO队列 */ class Filefifo { /** * $_file_data, 数据文件的路径 */ private $_fi ...

  7. 栈和队列ADT -数据结构(C语言实现)

    数据结构与算法分析 栈模型 限制插入和删除只能在表的末端的表 表的末端叫做栈顶(top) 支持Push进栈和Pop入栈操作 //LIFO后进先出表 栈的实现 链表实现 类型声明 struct Node ...

  8. 3.6 栈 ADT - 3.7 队列 ADT

    3.6 栈 ADT 栈是限制插入和删除只能在一个位置上进行的表,叫做栈的顶部.对栈的基本操作有进栈和出栈,进栈在顶部插入元素,出栈删除最后插入的元素. 栈是一个表,因此任何实现表的方法都能实现栈.显然 ...

  9. 多项式ADT的数组实现

    /*删除表的正确方法*/ /*assume header*/ void DeleteList(List L) { Position p,Tmp; p=L->Next; while(p != NU ...

随机推荐

  1. maven 插件jetty/tomcat启动 web 应用

    tomcat <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomca ...

  2. angularjs初识ng-app、ng-model、ng-repeat指令

    ng-app属性是angular.js的标志语句,它标记了angular.js的作用域.ng-app可以添加在很多地方,像上面那样添加到html标签上,说明angular脚本对整个页面都起作用.也可以 ...

  3. Java 8方法引用使用指南

    [编者按]本文作者为拥有15年 Java 开发经验的资深程序员 Per-Åke Minborg,主要介绍如何灵活地解析 Java 中的方法引用.文章系国内 ITOM 管理平台 OneAPM 编译呈现. ...

  4. FileTable的创建和使用

    1. 首先要在实例级别启用FILESTREAM,打开Sql Server Configuration Manager窗口,双击需要设置的SQL SERVER实例进行设置. 2. 需要更改 SQL SE ...

  5. [翻译] RSKImageCropper

    RSKImageCropper https://github.com/ruslanskorb/RSKImageCropper An image cropper for iOS like in the ...

  6. 关于cocos2dx的textfield事件响应

    time:2015/08/27 1. textfiled cocostudio的输入框,看源代码知道他是直接继承widget的,但是真正的输入框功能是label实现的,是Textfield类的一个成员 ...

  7. 连接Mysql错误 error 1042 can't get hostname for your address

    背景: 1.etc下的hosts文件有:     127.0.0.1   localhost 2.MySQL的my.ini配置文件:     [mysqld] 节点下已经加入以下两行代码 skip-n ...

  8. 一、JavaScript概述 二、JavaScript的语法 三、JavaScript的内置对象

    一.JavaScript的概述###<1>JavaScript的概念 又称ECMAScript,和java没有任何关系 嵌入在HTML元素中的 被浏览器解释运行的 一种脚本语言. ###& ...

  9. 激活office软件

    1. 打开校园软件正版化激活网址 http://nic.seu.edu.cn/2015/0113/c12333a115290/page.htm 2. 下载KMS激活脚本 3. 登陆easyconnec ...

  10. 第一篇,编译生成libcef_dll_wrapper

    因为工作原因需要在程序里面嵌入地图,在网上看了百度地图和高德地图都没有提供c++的接口,提供有web接口,那只好在程序里面嵌入web控件了,第一想到的是web browser控件,接着脑海里又想到IE ...