FIFO队列 ADT接口 链表实现
FIFO.h (接口)
#include "Item.h"
void QUEUinit(int);
int QUEUempty(void);
void QUEUput(Item);
Item QUEUget(void);
Item.h (自定义类型)
typedef char Item;
FIFO.c (接口实现)
#include "FIFO.h"
#include <stdlib.h> typedef struct STACKnode *link;
struct STACKnode
{
Item item;
link next;
}; static link head,tail;
static int N=,N1; static int STACKerror(int i)
{
if(i)
return N<N1?:; else
return N> ?:;
}
link NEW(Item item, link next)
{
link x = malloc(sizeof *x);
x->item=item; x->next=next;
return x;
}
void QUEUinit(int maxN)
{
N1=maxN;
head=NULL;
}
int QUEUempty(void)
{
return N;
}
void QUEUput(Item item)
{
if(head==NULL)
{
head=(tail=NEW(item, head));
return ;
}
tail->next=NEW(item, tail->next);
tail=tail->next;
N++;
}
Item QUEUget(void)
{
if(STACKerror())
{
Item item=head->item;
link t=head->next;
free(head);head=t;
N--;
return item;
}
else
printf("\nSTACKpop false");
return NULL;
}
main.c (主程序)
#include <stdio.h>
#include "FIFO.h" int main(void)
{
int N;
Item str[];
scanf("%s", str);
getchar(); N=sizeof(str)/sizeof(str[]);
printf("%d\n",N); QUEUinit(N);
for(int i=; i<N; i++)
{
QUEUput(str[i]);
}
for(int i=; i<N; i++)
{
printf("%c",QUEUget());
} return ;
}
FIFO队列 ADT接口 链表实现的更多相关文章
- 双端队列 ADT接口 链表实现
Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" typedef struct DEQUEUEn ...
- FIFO队列 ADT接口 数组实现
FIFO.h (接口) #include "Item.h" #include <stdlib.h> typedef struct STACKnode *link; st ...
- 随机队列 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); ...
- LIFO栈 ADT接口 链表实现
LIFO 链栈结构 typedef int ElemType; struct node{ ElemType data; struct node* next; }; typedef struct nod ...
- 【ADT】链表的基本C语言实现
什么是抽象数据类型?首先,这一概念是软件开发人员在力求编写的代码健壮.易维护且可以复用的过程中产生的.英文是AbstractData Type.有人将其比作"抽象"的墙壁,&quo ...
- 3.6 栈 ADT - 3.7 队列 ADT
3.6 栈 ADT 栈是限制插入和删除只能在一个位置上进行的表,叫做栈的顶部.对栈的基本操作有进栈和出栈,进栈在顶部插入元素,出栈删除最后插入的元素. 栈是一个表,因此任何实现表的方法都能实现栈.显然 ...
- 文件 FIFO队列
<?php /** * Filefifo.php 文件型FIFO队列 */ class Filefifo { /** * $_file_data, 数据文件的路径 */ private $_fi ...
- 阻塞队列 - java基于链表的简单实现
1.阻塞队列的原理 阻塞队列与普通队列的区别在于:阻塞队列为空时,从队列中获取元素的操作将会被阻塞,当队列为满时,往队列里添加元素的操作会被阻塞. 试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其 ...
随机推荐
- pc端配置详细 2017级机械设计新生 史浩然
品牌名称:SAMSUNG/三星 证书状态:有效 申请人名称:苏州三星电子电脑有限公司 型号:940X3K-K01 操作系统:window8.1 产品名 ...
- 关于 Windows 7 语言包
在对IE浏览器进行多语言对应的时候,网页会检测当前系统的语言,来判断网页需要以哪种语言显示.但是,在给系统安装指定语言包时,可能会遇到安装失败的情况,原因就是需要在你的电脑上安装必需的基本语言包.请看 ...
- ubuntu 摄像头软件
sudo apt-get install cheese
- She must be at least thirty-five years old.
She must be at least thirty-five years old. Though life's goodness can at times be overshadowed,it i ...
- 使用Swagger处理Api的显示与隐藏
一.在SwaggerConfig.cs中配置如下: c.DocumentFilter<ShowApiFilter>(); c.DocumentFilter<HideApiFilter ...
- linux 里的`反引号
Shell中可以将数字或字符直接赋予变量,也可以将Linux命令的执行结果赋予变量,如下: (1) $ count=9 #将数字赋予变量count (2) $ name=" ...
- websphere部署中文乱码问题
WebSphere上面的java虚拟机存在默认编码方式,默认为ISO-8859-1. 在JAVA虚拟机的定制属性页面上,添加如下内容: 1.修改服务器编码类型: (1)前台修改方法: 服务器-> ...
- CAAnimation 动画支撑系统
Model支撑:(依附对象) 从presentLayer获取数据: 渲染树为私有: -(void)addAnimation:(CAAnimation *)anim forKey:(NSString * ...
- 微信小程序开发——列表分页上拉加载封装实现(订单列表为例,订单状态改变后刷新列表滚动位置不变)
业务需求: 业务需求是给订单列表添加分页功能,也就是上拉加载这种每次只请求加载固定数量的数据. 需求分析: 对业务来说就是简单的分页上拉加载,但是对于技术实现来说,除了要处理分页数据的累加加载,还要处 ...
- Windows 2008 Scheduled tasks result codes
0 or 0x0: The operation completed successfully. 1 or 0x1: Incorrect function called or unknown funct ...