ref: 09411555a2a9a5600efeec449722ea362d1de25e
dir: /fifo.c/
#include <u.h>
#include <libc.h>
#include "rat.h"
#include "fifo.h"
Fifo*
mkfifo(void)
{
Fifo *q;
q = malloc(sizeof(*q));
q->front = nil;
return q;
}
int
isempty(Fifo *q)
{
return q->front == nil;
}
void
frontinsert(Fifo *q, Rat val)
{
Node *n;
n = malloc(sizeof(*n));
if(q->front == nil)
q->rear = &n->link;
n->val = val;
n->link = q->front;
q->front = n;
return;
}
void
insert(Fifo *q, Rat val)
{
Node *n;
n = malloc(sizeof(*n));
n->val = val;
n->link = nil;
if(q->front == nil)
q->front = n;
else
*q->rear = n;
q->rear = &n->link;
return;
}
Rat
delete(Fifo *q)
{
Rat r;
Node *n;
n = q->front;
r = n->val;
q->front = n->link;
free(n);
return r;
}