linked list api (doubly linked, track head and tail)
list.cpp@0:4212f9128c1b, 2012-10-11 (annotated)
- Committer:
- lucoby
- Date:
- Thu Oct 11 18:55:02 2012 +0000
- Revision:
- 0:4212f9128c1b
initial
Who changed what in which revision?
User | Revision | Line number | New 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 | } |