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接口 链表实现相关推荐

  1. java实现fifo算法_java算法:FIFO队列

    java算法:FIFO队列 FIFO队列是一个ADT,由两个基本操作构成:插入(放入)一个新项,删除(得到)最早插入的项. 例1:FIFO队列ADT接口 Java代码 interfaceintQueu ...

  2. C语言实现队列ADT(Queue ADT)接口COMP2521(附完整源码)

    C语言实现队列ADT接口COMP2521 QueueRep结构体定义 node结构体定义 实现以下5个接口 完整头文件 完整源文件 QueueRep结构体定义 typedef struct Queue ...

  3. 数据结构与算法笔记(五)——队列(FIFO队列、双端队列)

    一.FIFO队列 1.1.概念 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First In First Out)的线性表,简称FIFO.允许 ...

  4. 解析鸿蒙内核消息队列QueueMail接口的哼哈二将

    摘要:本文带领大家一起剖析了鸿蒙轻内核的队列模块的QueueMail两个接口的源代码. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列十三(续) 消息队列QueueMail接口>,作者: ...

  5. C语言实现图形ADT(Graph ADT)接口COMP2521(附完整源码)

    C语言实现图形ADT接口COMP2521 GraphRep结构体定义 Edge(边)定义 实现以下6个接口 完整头文件 完整源文件 GraphRep结构体定义 typedef struct Graph ...

  6. Vivado FIFO IP核接口信号介绍

    1.1 Vivado FIFO IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado FIFO IP核接口信号介绍: 5)结束语. 1.1.2 ...

  7. zookeeper应用 - FIFO 队列 分布式队列

    使用ZooKeeper实现的FIFO队列,这个队列是分布式的. package fifo; import java.util.Collections; import java.util.List; i ...

  8. 数据结构与算法 -- 队列 ADT

    像栈一样,队列(queue)也是表.然而,使用队列时插入在一端进行而删除则在另一端进行,也就是先进先出(FIFO).队列的基本操作是EnQueue(入队),它是在表的末端(叫做队尾(rear))插入一 ...

  9. 栈,队列,单链表,双向链表

    1. 定义头文件 实现栈方法的定义,注意这里用到了全局的静态数组,可以通过这种方式保护数据. main.c,实现存储 队列,创建头文件queue.h 创建queue.c 实现main函数 单链表 在定 ...

最新文章

  1. MySQL高可用的几种方案
  2. Qt Creator使用Qt Quick工具栏
  3. 40个Java多线程问题详解复习
  4. CIKM 2021 | AutoHERI: 基于层次表示自动聚合的 CVR 预估模型
  5. python list元素合并_python list 合并连接字符串的方法
  6. [Swagger2]拓展:其他皮肤
  7. scala 单元测试_Scala中的法律测试简介
  8. 今早服务器出现的问题
  9. oracle 中表,oracle中表操作
  10. 移动开发解决方案之玩转输入框
  11. 神经网络之BP神经网络
  12. 最好用的切图工具——firework
  13. 18数藏,太一捡漏,抢购,
  14. throw er; // Unhandled ‘error’ event
  15. 涉及的无盘网络技术方面问题的解答(转)
  16. Pandas 01- Series
  17. 一次zookeeper启动失败的解决过程
  18. IDEA文件UTF-8格式控制台输出中文乱码
  19. UltraEdit editplus notepad等的编码问题
  20. [SAP]工艺路线相关的表

热门文章

  1. flask-sqlalchemy Configuration
  2. flask route
  3. android 分享元素,Android开发之5.0activity跳转时共享元素的使用方法
  4. java 指定字段排序规则_Java之对List里面的元素实现按指定字段排序的方法
  5. Windows Server 2012 R2 WSUS-5:组策略配置自动更新
  6. FastDFS(提升磁盘IO性能的几个技巧 FastDFS 5.04之IO读事件)
  7. 截止2020年06月06日证书获得
  8. 外网ip有变化发送邮箱vbs版
  9. Tomcat学习总结(14)—— Tomcat常见面试题
  10. php fizz,php 的 FizzBuzzWhizznbsp;nbsp;