Files
hisi_SS524V100_SDK/mpp/sample/live-22AP10/live/testProgs/dqueue.c
T

49 lines
902 B
C
Executable File

#include "dqueue.h"
#include "dlist.h"
#include <stdlib.h>
dqueue dq_create(void)
{
dqueue q = (dqueue)malloc(sizeof(struct dqueued));
q -> head = dcons(NULL, NULL, NULL);
q -> tail = dcons(NULL, NULL, NULL);
q -> head -> next = q -> tail;
q -> tail -> prev = q -> head;
return q;
}
int dq_empty(dqueue q)
{
return q -> head -> next == q -> tail;
}
void dq_destory(dqueue q)
{
while(!dq_empty(q))
dq_deq_back(q);
}
void dq_enq_front(dqueue q, void *element)
{
create_and_link(element, q -> head, q -> head -> next);
}
void dq_enq_back(dqueue q, void *element)
{
create_and_link(element, q -> tail -> prev, q -> tail);
}
void * dq_deq_front(dqueue q)
{
//assert(!empty(q));
return unlink_and_free(q -> head -> next);
}
void * dq_deq_back(dqueue q)
{
//assert(!empty(q));
return unlink_and_free(q -> tail -> prev);
}