72 lines
1.1 KiB
C
72 lines
1.1 KiB
C
#include "nodelist.h"
|
|
|
|
void nodelist_init(nodelist_t nodelist)
|
|
{
|
|
nodelist->head=0;
|
|
nodelist->tail=0;
|
|
}
|
|
|
|
void nodelist_push_back(nodelist_t nodelist, queue_node_t *item)
|
|
{
|
|
if (!nodelist->head)
|
|
{
|
|
nodelist->head=item;
|
|
nodelist->tail=item;
|
|
}
|
|
else
|
|
{
|
|
nodelist->tail->Next=item;
|
|
nodelist->tail=item;
|
|
}
|
|
item->Next = 0;
|
|
}
|
|
|
|
void nodelist_push_front(nodelist_t nodelist, queue_node_t *item)
|
|
{
|
|
if (!nodelist->head)
|
|
{
|
|
nodelist->head=item;
|
|
nodelist->tail=item;
|
|
item->Next=0;
|
|
}
|
|
else
|
|
{
|
|
item->Next = nodelist->head;
|
|
nodelist->head = item;
|
|
}
|
|
}
|
|
|
|
queue_node_t *nodelist_pop_front(nodelist_t nodelist)
|
|
{
|
|
queue_node_t *ret;
|
|
if (!nodelist->head)
|
|
return 0;
|
|
|
|
ret = nodelist->head;
|
|
nodelist->head = nodelist->head->Next;
|
|
ret->Next = 0; // so we don't confuse anyone
|
|
|
|
if (ret == nodelist->tail)
|
|
{
|
|
nodelist->tail = 0;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
void nodelist_push_back_list(nodelist_t nodelist, queue_node_t *item)
|
|
{
|
|
if (!nodelist->head)
|
|
{
|
|
nodelist->head=item;
|
|
}
|
|
else
|
|
{
|
|
nodelist->tail->Next=item;
|
|
}
|
|
|
|
while (item->Next)
|
|
item = item->Next;
|
|
|
|
nodelist->tail = item;
|
|
}
|