00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00031 #include <malloc.h>
00032
00033 #ifndef __LINKEDLIST_H__
00034 #define __LINKEDLIST_H__
00035
00036 typedef struct LinkedList{
00037 struct LinkedList *next;
00038 struct LinkedList *prev;
00039 void *data;
00040 }LinkedList;
00041
00042 static inline
00043
00044 LinkedList* linkedlistAdd(LinkedList **front, void* data)
00045 {
00046 LinkedList *node = (LinkedList*)malloc(sizeof(LinkedList));
00047
00048 node->prev = 0;
00049
00050 if(*front == 0)
00051 {
00052 node->next = 0;
00053
00054 node->data = data;
00055
00056 *front = node;
00057
00058 return node;
00059 }
00060
00061 node->next = *front;
00062
00063 (*front)->prev = node;
00064
00065 return node;
00066 }
00067
00068
00069 static inline
00070
00071 void linkedlistRemove(LinkedList *node)
00072 {
00073 if(node == 0) return;
00074
00075 if(node->prev)
00076 {
00077 node->prev->next = node->next;
00078 }
00079
00080 if(node->next)
00081 {
00082 node->next->prev = node->prev;
00083 }
00084
00085 free(node);
00086 }
00087
00088 #endif