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 }
posted on 2018-03-29 09:31 MACHINE_001 阅读(221) 评论(0) 编辑 收藏 举报