ECE 2036 Project

Dependencies:   mbed wave_player 4DGL-uLCD-SE

Committer:
abraha2d
Date:
Thu Nov 21 16:10:57 2019 +0000
Revision:
2:2042f29de6b7
Parent:
0:cf4396614a79
Because other peeps is wanting dis...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rconnorlawson 0:cf4396614a79 1 #include <stdlib.h>
rconnorlawson 0:cf4396614a79 2 #include <stdio.h>
rconnorlawson 0:cf4396614a79 3 #include "doublely_linked_list.h"
rconnorlawson 0:cf4396614a79 4
abraha2d 2:2042f29de6b7 5 DLinkedList* create_dlinkedlist(void)
abraha2d 2:2042f29de6b7 6 {
abraha2d 2:2042f29de6b7 7
abraha2d 2:2042f29de6b7 8 // printf("create_dlinkedlist\n");
abraha2d 2:2042f29de6b7 9
abraha2d 2:2042f29de6b7 10 DLinkedList* newList = (DLinkedList*) malloc(sizeof(DLinkedList));
abraha2d 2:2042f29de6b7 11
abraha2d 2:2042f29de6b7 12 newList->size = 0;
rconnorlawson 0:cf4396614a79 13 newList->head = NULL;
abraha2d 2:2042f29de6b7 14 newList->current = NULL;
rconnorlawson 0:cf4396614a79 15 newList->tail = NULL;
abraha2d 2:2042f29de6b7 16
rconnorlawson 0:cf4396614a79 17 return newList;
abraha2d 2:2042f29de6b7 18
rconnorlawson 0:cf4396614a79 19 }
rconnorlawson 0:cf4396614a79 20
abraha2d 2:2042f29de6b7 21 LLNode* create_llnode(void* data)
abraha2d 2:2042f29de6b7 22 {
abraha2d 2:2042f29de6b7 23
abraha2d 2:2042f29de6b7 24 // printf("create_llnode\n");
abraha2d 2:2042f29de6b7 25
abraha2d 2:2042f29de6b7 26 LLNode* newNode = (LLNode*) malloc(sizeof(LLNode));
abraha2d 2:2042f29de6b7 27
abraha2d 2:2042f29de6b7 28 newNode->previous = NULL;
abraha2d 2:2042f29de6b7 29 newNode->next = NULL;
abraha2d 2:2042f29de6b7 30 newNode->data = data;
abraha2d 2:2042f29de6b7 31
abraha2d 2:2042f29de6b7 32 return newNode;
abraha2d 2:2042f29de6b7 33
abraha2d 2:2042f29de6b7 34 }
abraha2d 2:2042f29de6b7 35
abraha2d 2:2042f29de6b7 36
abraha2d 2:2042f29de6b7 37 void insertHead(DLinkedList* dLinkedList, void* data)
abraha2d 2:2042f29de6b7 38 {
rconnorlawson 0:cf4396614a79 39
abraha2d 2:2042f29de6b7 40 // printf("insertHead\n");
abraha2d 2:2042f29de6b7 41
abraha2d 2:2042f29de6b7 42 LLNode* newNode = create_llnode(data);
abraha2d 2:2042f29de6b7 43
abraha2d 2:2042f29de6b7 44 if (dLinkedList->head == NULL) {
abraha2d 2:2042f29de6b7 45
abraha2d 2:2042f29de6b7 46 dLinkedList->size++;
abraha2d 2:2042f29de6b7 47 dLinkedList->head = newNode;
abraha2d 2:2042f29de6b7 48 dLinkedList->tail = newNode;
abraha2d 2:2042f29de6b7 49
abraha2d 2:2042f29de6b7 50 } else {
abraha2d 2:2042f29de6b7 51
abraha2d 2:2042f29de6b7 52 dLinkedList->size++;
abraha2d 2:2042f29de6b7 53 newNode->next = dLinkedList->head;
abraha2d 2:2042f29de6b7 54 (dLinkedList->head)->previous = newNode;
abraha2d 2:2042f29de6b7 55 dLinkedList->head = newNode;
abraha2d 2:2042f29de6b7 56
abraha2d 2:2042f29de6b7 57 }
rconnorlawson 0:cf4396614a79 58
rconnorlawson 0:cf4396614a79 59 }
rconnorlawson 0:cf4396614a79 60
rconnorlawson 0:cf4396614a79 61
abraha2d 2:2042f29de6b7 62 void insertTail(DLinkedList* dLinkedList, void* data)
abraha2d 2:2042f29de6b7 63 {
abraha2d 2:2042f29de6b7 64
abraha2d 2:2042f29de6b7 65 // printf("insertTail\n");
abraha2d 2:2042f29de6b7 66
abraha2d 2:2042f29de6b7 67 LLNode* newNode = create_llnode(data);
abraha2d 2:2042f29de6b7 68
abraha2d 2:2042f29de6b7 69 if (dLinkedList->tail == NULL) {
rconnorlawson 0:cf4396614a79 70
abraha2d 2:2042f29de6b7 71 dLinkedList->size++;
abraha2d 2:2042f29de6b7 72 dLinkedList->tail = newNode;
abraha2d 2:2042f29de6b7 73 dLinkedList->head = newNode;
rconnorlawson 0:cf4396614a79 74
abraha2d 2:2042f29de6b7 75 } else {
rconnorlawson 0:cf4396614a79 76
abraha2d 2:2042f29de6b7 77 dLinkedList->size++;
abraha2d 2:2042f29de6b7 78 newNode->previous = dLinkedList->tail;
abraha2d 2:2042f29de6b7 79 (dLinkedList->tail)->next = newNode;
abraha2d 2:2042f29de6b7 80 dLinkedList->tail = newNode;
abraha2d 2:2042f29de6b7 81
abraha2d 2:2042f29de6b7 82 }
rconnorlawson 0:cf4396614a79 83
rconnorlawson 0:cf4396614a79 84 }
rconnorlawson 0:cf4396614a79 85
abraha2d 2:2042f29de6b7 86 int insertAfter(DLinkedList* dLinkedList, void* newData)
abraha2d 2:2042f29de6b7 87 {
abraha2d 2:2042f29de6b7 88
abraha2d 2:2042f29de6b7 89 // printf("insertAfter\n");
abraha2d 2:2042f29de6b7 90
abraha2d 2:2042f29de6b7 91 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 92 return 0;
abraha2d 2:2042f29de6b7 93 }
abraha2d 2:2042f29de6b7 94
abraha2d 2:2042f29de6b7 95 LLNode* newNode = create_llnode(newData);
rconnorlawson 0:cf4396614a79 96
abraha2d 2:2042f29de6b7 97 dLinkedList->size++;
abraha2d 2:2042f29de6b7 98 newNode->next = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 99 newNode->previous = dLinkedList->current;
abraha2d 2:2042f29de6b7 100 if (newNode->next == NULL) {
abraha2d 2:2042f29de6b7 101 dLinkedList->tail = newNode;
abraha2d 2:2042f29de6b7 102 } else {
abraha2d 2:2042f29de6b7 103 (newNode->next)->previous = newNode;
abraha2d 2:2042f29de6b7 104 }
abraha2d 2:2042f29de6b7 105 (newNode->previous)->next = newNode;
abraha2d 2:2042f29de6b7 106
abraha2d 2:2042f29de6b7 107 return 1;
rconnorlawson 0:cf4396614a79 108
rconnorlawson 0:cf4396614a79 109 }
rconnorlawson 0:cf4396614a79 110
abraha2d 2:2042f29de6b7 111 int insertBefore(DLinkedList* dLinkedList, void* newData)
abraha2d 2:2042f29de6b7 112 {
abraha2d 2:2042f29de6b7 113
abraha2d 2:2042f29de6b7 114 // printf("insertBefore\n");
abraha2d 2:2042f29de6b7 115
abraha2d 2:2042f29de6b7 116 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 117 return 0;
abraha2d 2:2042f29de6b7 118 }
abraha2d 2:2042f29de6b7 119
abraha2d 2:2042f29de6b7 120 LLNode* newNode = create_llnode(newData);
rconnorlawson 0:cf4396614a79 121
abraha2d 2:2042f29de6b7 122 dLinkedList->size++;
abraha2d 2:2042f29de6b7 123 newNode->next = dLinkedList->current;
abraha2d 2:2042f29de6b7 124 newNode->previous = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 125 (newNode->next)->previous = newNode;
abraha2d 2:2042f29de6b7 126 if (newNode->previous == NULL) {
abraha2d 2:2042f29de6b7 127 dLinkedList->head = newNode;
abraha2d 2:2042f29de6b7 128 } else {
abraha2d 2:2042f29de6b7 129 (newNode->previous)->next = newNode;
abraha2d 2:2042f29de6b7 130 }
abraha2d 2:2042f29de6b7 131
abraha2d 2:2042f29de6b7 132 return 1;
rconnorlawson 0:cf4396614a79 133
rconnorlawson 0:cf4396614a79 134 }
rconnorlawson 0:cf4396614a79 135
rconnorlawson 0:cf4396614a79 136
abraha2d 2:2042f29de6b7 137 void* deleteBackward(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 138 {
abraha2d 2:2042f29de6b7 139
abraha2d 2:2042f29de6b7 140 // printf("deleteBackward\n");
abraha2d 2:2042f29de6b7 141
abraha2d 2:2042f29de6b7 142 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 143 return NULL;
abraha2d 2:2042f29de6b7 144 }
abraha2d 2:2042f29de6b7 145
abraha2d 2:2042f29de6b7 146 dLinkedList->size--;
abraha2d 2:2042f29de6b7 147
abraha2d 2:2042f29de6b7 148 free((dLinkedList->current)->data);
rconnorlawson 0:cf4396614a79 149
abraha2d 2:2042f29de6b7 150 if ((dLinkedList->current)->previous == NULL) {
abraha2d 2:2042f29de6b7 151 dLinkedList->head = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 152 } else {
abraha2d 2:2042f29de6b7 153 ((dLinkedList->current)->previous)->next = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 154 }
abraha2d 2:2042f29de6b7 155
abraha2d 2:2042f29de6b7 156 if ((dLinkedList->current)->next == NULL) {
abraha2d 2:2042f29de6b7 157 dLinkedList->tail = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 158 } else {
abraha2d 2:2042f29de6b7 159 ((dLinkedList->current)->next)->previous = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 160 }
abraha2d 2:2042f29de6b7 161
abraha2d 2:2042f29de6b7 162 LLNode* newCurrent = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 163
abraha2d 2:2042f29de6b7 164 free(dLinkedList->current);
abraha2d 2:2042f29de6b7 165 dLinkedList->current = newCurrent;
abraha2d 2:2042f29de6b7 166
abraha2d 2:2042f29de6b7 167 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 168 return NULL;
abraha2d 2:2042f29de6b7 169 }
abraha2d 2:2042f29de6b7 170
abraha2d 2:2042f29de6b7 171 return (dLinkedList->current)->data;
rconnorlawson 0:cf4396614a79 172
rconnorlawson 0:cf4396614a79 173 }
rconnorlawson 0:cf4396614a79 174
rconnorlawson 0:cf4396614a79 175
rconnorlawson 0:cf4396614a79 176
abraha2d 2:2042f29de6b7 177 void* deleteForward(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 178 {
abraha2d 2:2042f29de6b7 179
abraha2d 2:2042f29de6b7 180 // printf("deleteForward\n");
abraha2d 2:2042f29de6b7 181
abraha2d 2:2042f29de6b7 182 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 183 return NULL;
abraha2d 2:2042f29de6b7 184 }
abraha2d 2:2042f29de6b7 185
abraha2d 2:2042f29de6b7 186 dLinkedList->size--;
abraha2d 2:2042f29de6b7 187
abraha2d 2:2042f29de6b7 188 free((dLinkedList->current)->data);
rconnorlawson 0:cf4396614a79 189
abraha2d 2:2042f29de6b7 190 if ((dLinkedList->current)->previous == NULL) {
abraha2d 2:2042f29de6b7 191 dLinkedList->head = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 192 } else {
abraha2d 2:2042f29de6b7 193 ((dLinkedList->current)->previous)->next = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 194 }
abraha2d 2:2042f29de6b7 195
abraha2d 2:2042f29de6b7 196 if ((dLinkedList->current)->next == NULL) {
abraha2d 2:2042f29de6b7 197 dLinkedList->tail = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 198 } else {
abraha2d 2:2042f29de6b7 199 ((dLinkedList->current)->next)->previous = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 200 }
abraha2d 2:2042f29de6b7 201
abraha2d 2:2042f29de6b7 202 LLNode* newCurrent = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 203
abraha2d 2:2042f29de6b7 204 free(dLinkedList->current);
abraha2d 2:2042f29de6b7 205 dLinkedList->current = newCurrent;
abraha2d 2:2042f29de6b7 206
abraha2d 2:2042f29de6b7 207 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 208 return NULL;
abraha2d 2:2042f29de6b7 209 }
abraha2d 2:2042f29de6b7 210
abraha2d 2:2042f29de6b7 211 return (dLinkedList->current)->data;
rconnorlawson 0:cf4396614a79 212
rconnorlawson 0:cf4396614a79 213 }
rconnorlawson 0:cf4396614a79 214
rconnorlawson 0:cf4396614a79 215
abraha2d 2:2042f29de6b7 216 void* removeBackward(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 217 {
abraha2d 2:2042f29de6b7 218
abraha2d 2:2042f29de6b7 219 // printf("removeBackward\n");
abraha2d 2:2042f29de6b7 220
abraha2d 2:2042f29de6b7 221 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 222 return NULL;
abraha2d 2:2042f29de6b7 223 }
abraha2d 2:2042f29de6b7 224
abraha2d 2:2042f29de6b7 225 dLinkedList->size--;
rconnorlawson 0:cf4396614a79 226
abraha2d 2:2042f29de6b7 227 if ((dLinkedList->current)->previous == NULL) {
abraha2d 2:2042f29de6b7 228 dLinkedList->head = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 229 } else {
abraha2d 2:2042f29de6b7 230 ((dLinkedList->current)->previous)->next = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 231 }
abraha2d 2:2042f29de6b7 232
abraha2d 2:2042f29de6b7 233 if ((dLinkedList->current)->next == NULL) {
abraha2d 2:2042f29de6b7 234 dLinkedList->tail = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 235 } else {
abraha2d 2:2042f29de6b7 236 ((dLinkedList->current)->next)->previous = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 237 }
abraha2d 2:2042f29de6b7 238
abraha2d 2:2042f29de6b7 239 void* oldData = (dLinkedList->current)->data;
abraha2d 2:2042f29de6b7 240
abraha2d 2:2042f29de6b7 241 LLNode* newCurrent = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 242
abraha2d 2:2042f29de6b7 243 free(dLinkedList->current);
abraha2d 2:2042f29de6b7 244 dLinkedList->current = newCurrent;
abraha2d 2:2042f29de6b7 245
abraha2d 2:2042f29de6b7 246 return oldData;
rconnorlawson 0:cf4396614a79 247
rconnorlawson 0:cf4396614a79 248 }
rconnorlawson 0:cf4396614a79 249
abraha2d 2:2042f29de6b7 250 void* removeForward(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 251 {
abraha2d 2:2042f29de6b7 252
abraha2d 2:2042f29de6b7 253 // printf("removeForward\n");
abraha2d 2:2042f29de6b7 254
abraha2d 2:2042f29de6b7 255 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 256 return NULL;
abraha2d 2:2042f29de6b7 257 }
abraha2d 2:2042f29de6b7 258
abraha2d 2:2042f29de6b7 259 dLinkedList->size--;
rconnorlawson 0:cf4396614a79 260
abraha2d 2:2042f29de6b7 261 if ((dLinkedList->current)->previous == NULL) {
abraha2d 2:2042f29de6b7 262 dLinkedList->head = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 263 } else {
abraha2d 2:2042f29de6b7 264 ((dLinkedList->current)->previous)->next = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 265 }
abraha2d 2:2042f29de6b7 266
abraha2d 2:2042f29de6b7 267 if ((dLinkedList->current)->next == NULL) {
abraha2d 2:2042f29de6b7 268 dLinkedList->tail = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 269 } else {
abraha2d 2:2042f29de6b7 270 ((dLinkedList->current)->next)->previous = (dLinkedList->current)->previous;
abraha2d 2:2042f29de6b7 271 }
abraha2d 2:2042f29de6b7 272
abraha2d 2:2042f29de6b7 273 void* oldData = (dLinkedList->current)->data;
abraha2d 2:2042f29de6b7 274
abraha2d 2:2042f29de6b7 275 LLNode* newCurrent = (dLinkedList->current)->next;
abraha2d 2:2042f29de6b7 276
abraha2d 2:2042f29de6b7 277 free(dLinkedList->current);
abraha2d 2:2042f29de6b7 278 dLinkedList->current = newCurrent;
abraha2d 2:2042f29de6b7 279
abraha2d 2:2042f29de6b7 280 return oldData;
rconnorlawson 0:cf4396614a79 281
rconnorlawson 0:cf4396614a79 282 }
rconnorlawson 0:cf4396614a79 283
rconnorlawson 0:cf4396614a79 284
abraha2d 2:2042f29de6b7 285 void destroyList(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 286 {
abraha2d 2:2042f29de6b7 287
abraha2d 2:2042f29de6b7 288 // printf("destroyList\n");
abraha2d 2:2042f29de6b7 289
abraha2d 2:2042f29de6b7 290 if (dLinkedList->head != NULL) {
abraha2d 2:2042f29de6b7 291 getHead(dLinkedList);
abraha2d 2:2042f29de6b7 292 while(deleteForward(dLinkedList)) {};
abraha2d 2:2042f29de6b7 293 }
abraha2d 2:2042f29de6b7 294
abraha2d 2:2042f29de6b7 295 free(dLinkedList);
abraha2d 2:2042f29de6b7 296
rconnorlawson 0:cf4396614a79 297 }
rconnorlawson 0:cf4396614a79 298
rconnorlawson 0:cf4396614a79 299
abraha2d 2:2042f29de6b7 300 void* getHead(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 301 {
abraha2d 2:2042f29de6b7 302
abraha2d 2:2042f29de6b7 303 // printf("getHead\n");
rconnorlawson 0:cf4396614a79 304
abraha2d 2:2042f29de6b7 305 dLinkedList->current = dLinkedList->head;
abraha2d 2:2042f29de6b7 306
abraha2d 2:2042f29de6b7 307 if (dLinkedList->head == NULL) {
abraha2d 2:2042f29de6b7 308 return NULL;
abraha2d 2:2042f29de6b7 309 }
abraha2d 2:2042f29de6b7 310
abraha2d 2:2042f29de6b7 311 return (dLinkedList->head)->data;
rconnorlawson 0:cf4396614a79 312
rconnorlawson 0:cf4396614a79 313 }
rconnorlawson 0:cf4396614a79 314
rconnorlawson 0:cf4396614a79 315
rconnorlawson 0:cf4396614a79 316
abraha2d 2:2042f29de6b7 317 void* getTail(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 318 {
abraha2d 2:2042f29de6b7 319
abraha2d 2:2042f29de6b7 320 // printf("getTail\n");
abraha2d 2:2042f29de6b7 321
abraha2d 2:2042f29de6b7 322 dLinkedList->current = dLinkedList->tail;
rconnorlawson 0:cf4396614a79 323
abraha2d 2:2042f29de6b7 324 if (dLinkedList->tail == NULL) {
abraha2d 2:2042f29de6b7 325 return NULL;
abraha2d 2:2042f29de6b7 326 }
rconnorlawson 0:cf4396614a79 327
abraha2d 2:2042f29de6b7 328 return (dLinkedList->tail)->data;
abraha2d 2:2042f29de6b7 329
rconnorlawson 0:cf4396614a79 330 }
rconnorlawson 0:cf4396614a79 331
rconnorlawson 0:cf4396614a79 332
rconnorlawson 0:cf4396614a79 333
abraha2d 2:2042f29de6b7 334 void* getCurrent(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 335 {
abraha2d 2:2042f29de6b7 336
abraha2d 2:2042f29de6b7 337 // printf("getCurrent\n");
rconnorlawson 0:cf4396614a79 338
abraha2d 2:2042f29de6b7 339 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 340 return NULL;
abraha2d 2:2042f29de6b7 341 }
abraha2d 2:2042f29de6b7 342
abraha2d 2:2042f29de6b7 343 return (dLinkedList->current)->data;
rconnorlawson 0:cf4396614a79 344
rconnorlawson 0:cf4396614a79 345 }
rconnorlawson 0:cf4396614a79 346
rconnorlawson 0:cf4396614a79 347
rconnorlawson 0:cf4396614a79 348
abraha2d 2:2042f29de6b7 349 void* getNext(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 350 {
abraha2d 2:2042f29de6b7 351
abraha2d 2:2042f29de6b7 352 // printf("getNext\n");
abraha2d 2:2042f29de6b7 353
abraha2d 2:2042f29de6b7 354 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 355 return NULL;
abraha2d 2:2042f29de6b7 356 }
rconnorlawson 0:cf4396614a79 357
abraha2d 2:2042f29de6b7 358 dLinkedList->current = (dLinkedList->current)->next;
rconnorlawson 0:cf4396614a79 359
abraha2d 2:2042f29de6b7 360 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 361 return NULL;
abraha2d 2:2042f29de6b7 362 }
abraha2d 2:2042f29de6b7 363
abraha2d 2:2042f29de6b7 364 return (dLinkedList->current)->data;
abraha2d 2:2042f29de6b7 365
rconnorlawson 0:cf4396614a79 366 }
rconnorlawson 0:cf4396614a79 367
rconnorlawson 0:cf4396614a79 368
rconnorlawson 0:cf4396614a79 369
abraha2d 2:2042f29de6b7 370 void* getPrevious(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 371 {
abraha2d 2:2042f29de6b7 372
abraha2d 2:2042f29de6b7 373 // printf("getPrevious\n");
abraha2d 2:2042f29de6b7 374
abraha2d 2:2042f29de6b7 375 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 376 return NULL;
abraha2d 2:2042f29de6b7 377 }
rconnorlawson 0:cf4396614a79 378
abraha2d 2:2042f29de6b7 379 dLinkedList->current = (dLinkedList->current)->previous;
rconnorlawson 0:cf4396614a79 380
abraha2d 2:2042f29de6b7 381 if (dLinkedList->current == NULL) {
abraha2d 2:2042f29de6b7 382 return NULL;
abraha2d 2:2042f29de6b7 383 }
abraha2d 2:2042f29de6b7 384
abraha2d 2:2042f29de6b7 385 return (dLinkedList->current)->data;
abraha2d 2:2042f29de6b7 386
rconnorlawson 0:cf4396614a79 387 }
rconnorlawson 0:cf4396614a79 388
rconnorlawson 0:cf4396614a79 389
abraha2d 2:2042f29de6b7 390 int getSize(DLinkedList* dLinkedList)
abraha2d 2:2042f29de6b7 391 {
rconnorlawson 0:cf4396614a79 392
abraha2d 2:2042f29de6b7 393 // printf("getSize\n");
abraha2d 2:2042f29de6b7 394
abraha2d 2:2042f29de6b7 395 return dLinkedList->size;
rconnorlawson 0:cf4396614a79 396
rconnorlawson 0:cf4396614a79 397 }