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.阻塞队列的原理 阻塞队列与普通队列的区别在于:阻塞队列为空时,从队列中获取元素的操作将会被阻塞,当队列为满时,往队列里添加元素的操作会被阻塞. 试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其 ...
随机推荐
- 转 C++11之std::function和std::bind
std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...
- 在Vue-cli项目中引入Bootstrap
(1)到bootstrap官网下载所需版本的bootstrap.zip文件. (2)将bootstrap.min.css以及bootstrap.min.js解压到assets文件夹,另外还需要将fon ...
- postgresql+postgis+pgrouting实现最短路径查询(2)---openlayers+geoserver实现最短路径
自己的最短路径实现基本上是按照参考博文的1.2和3进行的,实现的时候也是问题不断,只能是一个一个解决. 问题1:自己发布的geoserver服务无法和OSM底图叠加到一起. 解决:参考博文2提到发布服 ...
- Task ‘run’ not found in root project
问题现象: Task 'run' not found in root project 'springframework'. 问题原因: 没有在gradle.build文件中添加如下配置, mainCl ...
- 用画小狗的方法来解释Java中的值传递
在开始看我画小狗之前,咱们先来看道很简单的题目: 下面程序的输出是什么? Dog myDog = new Dog("旺财"); changeName(myDog); System. ...
- Intellii IDEA 中快速补全main方法:psvm
psvm可以快速补全main方法 效果:
- UOJ #62. 【UR #5】怎样跑得更快
题目分析 显然不可能高斯消元. 考虑反演. \(b_i=\sum\limits_{j=1}^n\gcd(i,j)^C\cdot \text{lcm}(i,j)^D\cdot x_j\) \(b_i=\ ...
- Centos7 安装eclipse IDE for C++
1.安装前eclipse需要java, yum -y install java 查看版本java -version 2.下载eclipse IDE http://www.eclipse.org/dow ...
- Spring(二十)之使用Log4j记录日志
日志记录,也是常用的,比如异常信息记录或者其他相关信息记录,良好的日志记录有助于当系统出现某些不是特别大的问题时,可及时通过日志信息,捕捉到异常,从而确定是那段代码的问题,避免影响其他的代码. 关于m ...
- 利用python进行数据分析——(一)库的学习
总结一下自己对python常用包:Numpy,Pandas,Matplotlib,Scipy,Scikit-learn 一. Numpy: 标准安装的Python中用列表(list)保存一组值,可以用 ...