54 lines
862 B
C
54 lines
862 B
C
node *alloc_node(int Value, int x, int y, node *Next)
|
|
{
|
|
node *NewNode = malloc(sizeof(node));
|
|
NewNode->Value = Value;
|
|
NewNode->x = x;
|
|
NewNode->y = y;
|
|
NewNode->Next = Next;
|
|
|
|
return NewNode;
|
|
}
|
|
|
|
void list_add(node **Head, int Value, int x, int y)
|
|
{
|
|
node *NewNode = alloc_node(Value, x, y, *Head);
|
|
*Head = NewNode;
|
|
}
|
|
|
|
node *list_get(node **Head, int x, int y)
|
|
{
|
|
for(node *Iter = *Head; Iter; Iter = Iter->Next)
|
|
{
|
|
if(Iter->x == x && Iter->y == y)
|
|
{
|
|
return Iter;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void list_remove(node **Head, node *Node)
|
|
{
|
|
node *Prev = 0;
|
|
for(node *Iter = *Head; Iter; Iter = Iter->Next)
|
|
{
|
|
if(Iter == Node)
|
|
break;
|
|
Prev = Iter;
|
|
}
|
|
if(Prev)
|
|
Prev->Next = Node->Next;
|
|
free(Node);
|
|
}
|
|
|
|
void list_free(node **Head)
|
|
{
|
|
for(node *Iter = *Head; Iter; )
|
|
{
|
|
node *ToFree = Iter;
|
|
Iter = Iter->Next;
|
|
|
|
free(ToFree);
|
|
}
|
|
}
|