Ver Fonte

Added the Linked List functionality

Samuel W. Flint há 7 anos atrás
pai
commit
c4bb2aff29
1 ficheiros alterados com 50 adições e 0 exclusões
  1. 50 0
      linkedList.h

+ 50 - 0
linkedList.h

@@ -0,0 +1,50 @@
+#define LINKED_LIST
+
+struct listElement {
+  void * data;
+  struct listElement *next;
+  struct listElement *previous;
+};
+
+typedef struct listElement LISTEL;
+
+LISTEL * insertBefore(void *theData, LISTEL *place)
+{
+  LISTEL * element = malloc(sizeof(LISTEL));
+  element->data = theData;
+  if(place->previous == NULL)
+    {
+      element->next = place;
+      place->previous = element;
+    }
+  else
+    {
+      LISTEL * previous = place->previous;
+      previous->next = element;
+      element->previous = previous;
+      place->previous = place;
+      element->next = place;
+    }
+  
+  return element;
+}
+
+LISTEL * insertAfter(void *theData, LISTEL *place)
+{
+  LISTEL * element = malloc(sizeof(LISTEL));
+  element->data = theData;
+  if(place->next == NULL)
+    {
+      element->previous = place;
+      place->next = element;
+    }
+  else
+    {
+      LISTEL * next = place->next;
+      next->previous = element;
+      element->next = next;
+      place->next = element;
+      element->previous = place;
+    }
+  return element;
+}