FIFO队列 ADT接口 链表实现
FIFO.h (接口)
1 #include "Item.h" 2 void QUEUinit(int); 3 int QUEUempty(void); 4 void QUEUput(Item); 5 Item QUEUget(void);
Item.h (自定义类型)
1 typedef char Item;
FIFO.c (接口实现)
1 #include "FIFO.h" 2 #include <stdlib.h> 3 4 typedef struct STACKnode *link; 5 struct STACKnode 6 { 7 Item item; 8 link next; 9 }; 10 11 static link head,tail; 12 static int N=1,N1; 13 14 static int STACKerror(int i) 15 { 16 if(i) 17 return N<N1?1:0; 18 19 else 20 return N>0 ?1:0; 21 } 22 link NEW(Item item, link next) 23 { 24 link x = malloc(sizeof *x); 25 x->item=item; x->next=next; 26 return x; 27 } 28 void QUEUinit(int maxN) 29 { 30 N1=maxN; 31 head=NULL; 32 } 33 int QUEUempty(void) 34 { 35 return N; 36 } 37 void QUEUput(Item item) 38 { 39 if(head==NULL) 40 { 41 head=(tail=NEW(item, head)); 42 return ; 43 } 44 tail->next=NEW(item, tail->next); 45 tail=tail->next; 46 N++; 47 } 48 Item QUEUget(void) 49 { 50 if(STACKerror(0)) 51 { 52 Item item=head->item; 53 link t=head->next; 54 free(head);head=t; 55 N--; 56 return item; 57 } 58 else 59 printf("\nSTACKpop false"); 60 return NULL; 61 }
main.c (主程序)
1 #include <stdio.h> 2 #include "FIFO.h" 3 4 int main(void) 5 { 6 int N; 7 Item str[11]; 8 scanf("%s", str); 9 getchar(); 10 11 N=sizeof(str)/sizeof(str[0]); 12 printf("%d\n",N); 13 14 QUEUinit(N); 15 for(int i=0; i<N; i++) 16 { 17 QUEUput(str[i]); 18 } 19 for(int i=0; i<N; i++) 20 { 21 printf("%c",QUEUget()); 22 } 23 24 return 0; 25 }
转载于:https://www.cnblogs.com/WALLACE-S-BOOK/p/8668011.html
FIFO队列 ADT接口 链表实现相关推荐
- java实现fifo算法_java算法:FIFO队列
java算法:FIFO队列 FIFO队列是一个ADT,由两个基本操作构成:插入(放入)一个新项,删除(得到)最早插入的项. 例1:FIFO队列ADT接口 Java代码 interfaceintQueu ...
- C语言实现队列ADT(Queue ADT)接口COMP2521(附完整源码)
C语言实现队列ADT接口COMP2521 QueueRep结构体定义 node结构体定义 实现以下5个接口 完整头文件 完整源文件 QueueRep结构体定义 typedef struct Queue ...
- 数据结构与算法笔记(五)——队列(FIFO队列、双端队列)
一.FIFO队列 1.1.概念 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First In First Out)的线性表,简称FIFO.允许 ...
- 解析鸿蒙内核消息队列QueueMail接口的哼哈二将
摘要:本文带领大家一起剖析了鸿蒙轻内核的队列模块的QueueMail两个接口的源代码. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列十三(续) 消息队列QueueMail接口>,作者: ...
- C语言实现图形ADT(Graph ADT)接口COMP2521(附完整源码)
C语言实现图形ADT接口COMP2521 GraphRep结构体定义 Edge(边)定义 实现以下6个接口 完整头文件 完整源文件 GraphRep结构体定义 typedef struct Graph ...
- Vivado FIFO IP核接口信号介绍
1.1 Vivado FIFO IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado FIFO IP核接口信号介绍: 5)结束语. 1.1.2 ...
- zookeeper应用 - FIFO 队列 分布式队列
使用ZooKeeper实现的FIFO队列,这个队列是分布式的. package fifo; import java.util.Collections; import java.util.List; i ...
- 数据结构与算法 -- 队列 ADT
像栈一样,队列(queue)也是表.然而,使用队列时插入在一端进行而删除则在另一端进行,也就是先进先出(FIFO).队列的基本操作是EnQueue(入队),它是在表的末端(叫做队尾(rear))插入一 ...
- 栈,队列,单链表,双向链表
1. 定义头文件 实现栈方法的定义,注意这里用到了全局的静态数组,可以通过这种方式保护数据. main.c,实现存储 队列,创建头文件queue.h 创建queue.c 实现main函数 单链表 在定 ...
最新文章
- MySQL高可用的几种方案
- Qt Creator使用Qt Quick工具栏
- 40个Java多线程问题详解复习
- CIKM 2021 | AutoHERI: 基于层次表示自动聚合的 CVR 预估模型
- python list元素合并_python list 合并连接字符串的方法
- [Swagger2]拓展:其他皮肤
- scala 单元测试_Scala中的法律测试简介
- 今早服务器出现的问题
- oracle 中表,oracle中表操作
- 移动开发解决方案之玩转输入框
- 神经网络之BP神经网络
- 最好用的切图工具——firework
- 18数藏,太一捡漏,抢购,
- throw er; // Unhandled ‘error’ event
- 涉及的无盘网络技术方面问题的解答(转)
- Pandas 01- Series
- 一次zookeeper启动失败的解决过程
- IDEA文件UTF-8格式控制台输出中文乱码
- UltraEdit editplus notepad等的编码问题
- [SAP]工艺路线相关的表
热门文章
- flask-sqlalchemy Configuration
- flask route
- android 分享元素,Android开发之5.0activity跳转时共享元素的使用方法
- java 指定字段排序规则_Java之对List里面的元素实现按指定字段排序的方法
- Windows Server 2012 R2 WSUS-5:组策略配置自动更新
- FastDFS(提升磁盘IO性能的几个技巧 FastDFS 5.04之IO读事件)
- 截止2020年06月06日证书获得
- 外网ip有变化发送邮箱vbs版
- Tomcat学习总结(14)—— Tomcat常见面试题
- php fizz,php 的 FizzBuzzWhizznbsp;nbsp;