FIFO队列 ADT接口 数组实现

本文介绍了一个简单的FIFO队列数据结构实现,并通过一个字符读取的应用案例展示了其使用方式。该队列采用环形数组的方式进行设计,包括初始化、判断是否为空、入队和出队等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FIFO.h (接口)

 1 #include "Item.h"
 2 #include <stdlib.h>
 3 
 4 typedef struct STACKnode *link;
 5 struct STACKnode
 6 {
 7     Item item;
 8     link next;
 9 };
10 
11 void QUEUEinit(int);
12 int QUEUEempty(void);
13 void QUEUEput(Item);
14 Item QUEUEget(void);
15 void QUEUEerror(void);

 

Item.h (自定义类型)

1 typedef char Item;

FIFO.c (接口实现)

 1 static Item *q;
 2 static int N, head, tail;
 3 
 4 void QUEUEinit(int maxN)
 5 {
 6     q=malloc((maxN+1)*sizeof(Item));
 7     N=maxN+1;
 8     head=N; 
 9     tail=0; 
10 }
11 int QUEUEempty(void)
12 {
13     return head%N==tail;
14 }
15 void QUEUEput(Item item)
16 {
17     if(tail==head-1)
18         QUEUEerror();
19     q[tail++]=item;
20     tail=tail%N;
21 }
22 Item QUEUEget(void)
23 {
24     if(QUEUEempty())
25         QUEUEerror();
26     head=head%N;
27     return q[head++];
28 }
29 void QUEUEerror(void)
30 {
31     printf("队列为空或已满");
32     exit(1);
33 } 

 

main.c (主程序)

 1 #include <stdio.h>
 2 #include "FIFO.h"
 3 
 4 int main(void)
 5 {
 6     int N;
 7     printf("输入字符串大小:");
 8     if(scanf("%d", &N))
 9         QUEUEinit(N);
10     getchar();
11     printf("输入字符串\n");
12     while((N=getchar())!=EOF)
13     {
14         if(N=='*')
15             {
16                 putchar(QUEUEget());
17                 putchar('\n');
18             }
19         else
20             QUEUEput(N);
21     }
22     
23     return 0;
24 }

 

转载于:https://www.cnblogs.com/WALLACE-S-BOOK/p/8982550.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值