linkedList.h 1022 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #define LINKED_LIST
  2. struct listElement {
  3. void * data;
  4. struct listElement *next;
  5. struct listElement *previous;
  6. };
  7. typedef struct listElement LISTEL;
  8. LISTEL * insertBefore(void *theData, LISTEL *place)
  9. {
  10. LISTEL * element = malloc(sizeof(LISTEL));
  11. element->data = theData;
  12. if(place->previous == NULL)
  13. {
  14. element->next = place;
  15. place->previous = element;
  16. }
  17. else
  18. {
  19. LISTEL * previous = place->previous;
  20. previous->next = element;
  21. element->previous = previous;
  22. place->previous = place;
  23. element->next = place;
  24. }
  25. return element;
  26. }
  27. LISTEL * insertAfter(void *theData, LISTEL *place)
  28. {
  29. LISTEL * element = malloc(sizeof(LISTEL));
  30. element->data = theData;
  31. if(place->next == NULL)
  32. {
  33. element->previous = place;
  34. place->next = element;
  35. }
  36. else
  37. {
  38. LISTEL * next = place->next;
  39. next->previous = element;
  40. element->next = next;
  41. place->next = element;
  42. element->previous = place;
  43. }
  44. return element;
  45. }