FIFO队列 ADT接口 数组实现
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接口 数组实现的更多相关文章
- 随机队列 ADT接口 数组实现
Random queue ADT接口 RANDOM.h #include <stdlib.h> #include "Item.h" #include <time. ...
- 双端队列 ADT接口 数组实现
Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" void DEQUEUEinit(int); ...
- FIFO队列 ADT接口 链表实现
FIFO.h (接口) #include "Item.h" void QUEUinit(int); int QUEUempty(void); void QUEUput(Item); ...
- 双端队列 ADT接口 链表实现
Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" typedef struct DEQUEUEn ...
- LIFO栈 ADT接口 数组实现
LIFO 栈结构 typedef int ElemenType; struct seqStack{ ElemeType data[MaxSize]; int top; }; typedef struc ...
- 文件 FIFO队列
<?php /** * Filefifo.php 文件型FIFO队列 */ class Filefifo { /** * $_file_data, 数据文件的路径 */ private $_fi ...
- 栈和队列ADT -数据结构(C语言实现)
数据结构与算法分析 栈模型 限制插入和删除只能在表的末端的表 表的末端叫做栈顶(top) 支持Push进栈和Pop入栈操作 //LIFO后进先出表 栈的实现 链表实现 类型声明 struct Node ...
- 3.6 栈 ADT - 3.7 队列 ADT
3.6 栈 ADT 栈是限制插入和删除只能在一个位置上进行的表,叫做栈的顶部.对栈的基本操作有进栈和出栈,进栈在顶部插入元素,出栈删除最后插入的元素. 栈是一个表,因此任何实现表的方法都能实现栈.显然 ...
- 多项式ADT的数组实现
/*删除表的正确方法*/ /*assume header*/ void DeleteList(List L) { Position p,Tmp; p=L->Next; while(p != NU ...
随机推荐
- java 内存分析之this
package Demo; /** * this 的值是当前对象的引用 * @author Aaron * */ public class Boy { private int age; public ...
- python匿名函数 高阶函数 内置函数 文件操作
1.匿名函数 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用 ...
- 第三届移动互联网测试开发大会 PPT合集下载
PPT下载地址 http://www.51test.space/archives/2887 大会介绍 Mobile Testing Summit China(中国移动互联网测试开发大会)是一个以移动测 ...
- Python项目生成requirements.txt的多种方式
我相信任何软件程序都会有依赖的类库,尤其现在开源如此的火爆,因为一个项目可能会有无很多的依赖的包 这个时候难道我们都要一个一个的去找到安装吗?即使你找到了依赖的包 但是呢模块的版本又有很多难道你都要装 ...
- 制作 OS X El Capitan 启动盘
制作 OS X El Capitan 启动盘 1. 下载系统盘的dmg格式 2. 直到出现了 3. 在命令行中找到 Install OS X El Capitan.app 4. 格式化你的U盘(U盘名 ...
- 也许,这样理解HTTPS更容易
http://kb.cnblogs.com/page/563885/ 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文 ...
- MongoDB的Spring-data-mongodb集成(Win10 x64) 第一章 - MongoDB安装与简单命令
这是MongoDB系列的第一章,作者将持续更新. 1.下载 https://www.mongodb.com/download-center#community 2.安装与配置 有关安装的任何困难请点击 ...
- shell study
目录 shell记录 执行脚本 变量使用 注释 shell传递参数 运算符 echo printf test 流程控制 if ... else ... for while until case 跳出循 ...
- December 02nd 2016 Week 49th Friday
People will fall for its appearance while driving passionately. 观者倾心,驭者动魄. An advertisement of Merce ...
- Mac Item2 设置别名 永久生效
使用 Item2 终端, 设置 别名的时候, 按照 网上的说法, 是 去 修改 用户目录下的 .bashrc 或者 .bash_profile 这两个文件都可以, 把 alias 写在 这两 ...