FIFO队列 ADT接口 数组实现

Posted MACHINE_001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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("输入字符串\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 }

 

以上是关于FIFO队列 ADT接口 数组实现的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法分析 - 4 - 队列

双端队列 ADT接口 数组实现

Python实现的数据结构与算法之队列详解

双端队列 ADT接口 链表实现

perl中的队列

用数组实现FIFO队列