FIFO队列 ADT接口 数组实现
程序员文章站
2024-03-18 11:51:46
...
FIFO.h (接口)
#include "Item.h"
#include <stdlib.h>
typedef struct STACKnode *link;
struct STACKnode
{
Item item;
link next;
};
void QUEUEinit(int);
int QUEUEempty(void);
void QUEUEput(Item);
Item QUEUEget(void);
void QUEUEerror(void);
Item.h (自定义类型)
typedef char Item;
FIFO.c (接口实现)
static Item *q;
static int N, head, tail;
void QUEUEinit(int maxN)
{
q=malloc((maxN+1)*sizeof(Item));
N=maxN+1;
head=N;
tail=0;
}
int QUEUEempty(void)
{
return head%N==tail;
}
void QUEUEput(Item item)
{
if(tail==head-1)
QUEUEerror();
q[tail++]=item;
tail=tail%N;
}
Item QUEUEget(void)
{
if(QUEUEempty())
QUEUEerror();
head=head%N;
return q[head++];
}
void QUEUEerror(void)
{
printf("队列为空或已满");
exit(1);
}
main.c (主程序)
#include <stdio.h>
#include "FIFO.h"
int main(void)
{
int N;
printf("输入字符串大小:");
if(scanf("%d", &N))
QUEUEinit(N);
getchar();
printf("输入字符串\n");
while((N=getchar())!=EOF)
{
if(N=='*')
{
putchar(QUEUEget());
putchar('\n');
}
else
QUEUEput(N);
}
return 0;
}
上一篇: java继承的简单了解
下一篇: 用栈实现队列(Leetcode)