linked list api (doubly linked, track head and tail)

Dependents:   snake

Committer:
lucoby
Date:
Thu Oct 11 18:55:02 2012 +0000
Revision:
0:4212f9128c1b
initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lucoby 0:4212f9128c1b 1 #include "mbed.h"
lucoby 0:4212f9128c1b 2 #include "list.h"
lucoby 0:4212f9128c1b 3
lucoby 0:4212f9128c1b 4
lucoby 0:4212f9128c1b 5 void addToHead(List* list, int row, int col)
lucoby 0:4212f9128c1b 6 {
lucoby 0:4212f9128c1b 7
lucoby 0:4212f9128c1b 8 Lnode* head = (Lnode*) malloc(sizeof(Lnode));
lucoby 0:4212f9128c1b 9 head->row = row;
lucoby 0:4212f9128c1b 10 head->col = col;
lucoby 0:4212f9128c1b 11 head->next = list->head;
lucoby 0:4212f9128c1b 12 head->prev = NULL;
lucoby 0:4212f9128c1b 13 if(list->head) {
lucoby 0:4212f9128c1b 14 list->head->prev = head;
lucoby 0:4212f9128c1b 15 list->head = head;
lucoby 0:4212f9128c1b 16 } else {
lucoby 0:4212f9128c1b 17 list->head = head;
lucoby 0:4212f9128c1b 18 list->tail = head;
lucoby 0:4212f9128c1b 19 }
lucoby 0:4212f9128c1b 20 }
lucoby 0:4212f9128c1b 21
lucoby 0:4212f9128c1b 22 void removeFromTail(List* list)
lucoby 0:4212f9128c1b 23 {
lucoby 0:4212f9128c1b 24 if(list->tail) {
lucoby 0:4212f9128c1b 25 list->tail = list->tail->prev;
lucoby 0:4212f9128c1b 26 free(list->tail->next);
lucoby 0:4212f9128c1b 27 if(list->tail) {
lucoby 0:4212f9128c1b 28 list->tail->next = NULL;
lucoby 0:4212f9128c1b 29 } else {
lucoby 0:4212f9128c1b 30 list->head = NULL;
lucoby 0:4212f9128c1b 31 }
lucoby 0:4212f9128c1b 32 }
lucoby 0:4212f9128c1b 33 }
lucoby 0:4212f9128c1b 34
lucoby 0:4212f9128c1b 35 void deleteList(List* list)
lucoby 0:4212f9128c1b 36 {
lucoby 0:4212f9128c1b 37 Lnode* phere = list->head;
lucoby 0:4212f9128c1b 38 Lnode* temp;
lucoby 0:4212f9128c1b 39 while(phere != NULL) {
lucoby 0:4212f9128c1b 40 temp = phere->next;
lucoby 0:4212f9128c1b 41 free(phere);
lucoby 0:4212f9128c1b 42 phere = temp;
lucoby 0:4212f9128c1b 43 }
lucoby 0:4212f9128c1b 44 list->head = NULL;
lucoby 0:4212f9128c1b 45 list->tail = NULL;
lucoby 0:4212f9128c1b 46 }