FIFO队列 ADT接口 数组实现

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("输入字符串
");
12     while((N=getchar())!=EOF)
13     {
14         if(N=='*')
15             {
16                 putchar(QUEUEget());
17                 putchar('
');
18             }
19         else
20             QUEUEput(N);
21     }
22     
23     return 0;
24 }
原文地址:https://www.cnblogs.com/WALLACE-S-BOOK/p/8982550.html