/** * @file LinkedList.c * @author Davidthefat * @date 10/27/12 * @version 1.0 */ #include "LinkedList.h" void *get(int index) { if(index >= self->size) return NULL; int i = 0; self->iterator = self->head; while(i++iterator = self->iterator->next; return self->iterator->data; } LList *construct() { self = (LList*)malloc(sizeof(LList)); self->size = 2; self->head = (Node*)malloc(sizeof(Node)); self->tail = (Node*)malloc(sizeof(Node)); self->head->next = self->tail; self->tail->next = NULL; self->head->data = NULL; self->tail->data = NULL; self->get = &get; self->add = &add; self->addEnd = &addEnd; self->addBeg = &addBeg; self->del = &del; self->set = &set; self->destruct = &destruct; return self; } void add(void *in, int index) { if(index >= self->size && self->size != 0) return (void)printf("Index out of bounds\n"); if(index == 0 && self->size == 0) { self->head->data = in; return; } else if(index == 0) return addBeg(in); int i = 0; Node *temp = (Node*)malloc(sizeof(Node)); temp->data = in; self->iterator = self->head; while(i++iterator = self->iterator->next; temp->next = self->iterator->next; self->iterator->next = temp; self->size++; } void addEnd(void *in) { Node *temp = (Node*)malloc(sizeof(Node)); temp->data = in; temp->next = NULL; self->tail->next = temp; self->tail = temp; self->size++; } void addBeg(void *in) { Node *temp = (Node*)malloc(sizeof(Node)); temp->data = in; temp->next = self->head; self->head = temp; self->size++; } char del(int index) { Node *temp; if(index >= self->size) return 0*printf("Index out of bounds\n"); int i = 0; self->iterator = self->head; while(i++iterator = self->iterator->next; temp = self->iterator; self->iterator = self->iterator->next; temp->next = self->iterator->next; free(self->iterator->data); free(self->iterator); self->size--; return 1; } void set(void *in, int index) { if(index >= self->size) return (void)printf("Index out of bounds\n"); int i = 0; self->iterator = self->head; while(i++iterator = self->iterator->next; self->iterator->data = in; } void destruct() { while(self->head->next && del(self->size-1)) ; }