Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @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++<index)
- self->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++<index-1)
- self->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++<index-1)
- self->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++<index)
- self->iterator = self->iterator->next;
- self->iterator->data = in;
- }
- void destruct()
- {
- while(self->head->next && del(self->size-1))
- ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement