From de33835feb16ca52aabd3eefc7d60bed8eb024f6 Mon Sep 17 00:00:00 2001 From: imakhil Date: Mon, 30 Sep 2019 20:17:11 +0530 Subject: [PATCH 1/2] Add linkedlist using functions --- linkedlist_basic.c | 154 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 linkedlist_basic.c diff --git a/linkedlist_basic.c b/linkedlist_basic.c new file mode 100644 index 0000000..1b1aba0 --- /dev/null +++ b/linkedlist_basic.c @@ -0,0 +1,154 @@ +#include +#include + +// node +struct Node{ + int data; + struct Node* link; +};typedef struct Node NODE; + +// create new list +NODE* createNewList(){ + NODE* node = (NODE*) malloc(sizeof(NODE)); + node->data = 0; + node->link = NULL; + + return node; +} + +// get a new node +NODE* newNode(){ + return (NODE*) malloc(sizeof(NODE)); +} + +// insert new element at first +void insertNodeEnd(NODE* Header, int data){ + + NODE* crt = Header; + NODE* new = newNode(); + + + while(crt->link != NULL){ + crt = crt->link; + } + + new->link = NULL; + new->data = data; + crt->link = new; + +} + +// insert new element at beginning +void insertNodeBeg(NODE* Header, int data){ + + NODE* crt = Header; + + NODE* new = newNode(); + new->data = data; + + new->link = crt->link; + crt->link = new; + + +} + +// insert node after a key +void insertNodeAt(NODE* Header, int data, int key){ + + NODE* crt = Header->link; + + NODE* new = newNode(); + new->data = data; + + while(crt != NULL && crt->data != key){ + crt = crt->link; + } + + if(crt != NULL && crt->data == key){ + new->link = crt->link; + crt->link = new; + } + +} + + + +// delete node at end +void deleteNodeEnd(NODE* Header){ + + NODE* crt = Header; + NODE* prev; + + while(crt->link != NULL){ + prev = crt; + crt = crt->link; + } + + prev->link = NULL; + free(crt); +} + +// delete node at beginning +void deleteNodeBeg(NODE* Header){ + + NODE* crt = Header; + NODE* del = crt->link; + + crt->link = del->link; + + free(del); + +} + +// delete node after a key +void deleteNodeAt(NODE* Header, int key){ + + NODE* crt = Header->link; + NODE* del; + + while(crt != NULL && crt->data != key){ + crt = crt->link; + } + + if(crt != NULL && crt->data == key){ + del = crt->link; + if(del != NULL){ + crt->link = del->link; + free(del); + } + } + +} + + + + +// print linked list +void print_links(NODE* Header){ + struct Node* node = Header->link; + while(node != NULL){ + printf("%d\n", node->data); + node = node->link; + } + +} + + +// main function +void main(){ + + NODE* node = createNewList(); // create a new linked list + + insertNodeBeg(node, 1); // insert a new node at beg + insertNodeEnd(node, 100); // insert a new node at end + insertNodeAt(node, 88, 100); // insert a new node after key (here 88) + + + deleteNodeBeg(node); // delete node from beg + deleteNodeEnd(node); // delete node from end + deleteNodeAt(node, 100); // delete node after a key (here 100) + + + print_links(node); // print all nodes + +} \ No newline at end of file From ee99919e0c35527ce4d8c5d91173dc2f2d73b4b7 Mon Sep 17 00:00:00 2001 From: Akhil Ravindran Date: Mon, 30 Sep 2019 20:20:53 +0530 Subject: [PATCH 2/2] Update author details --- linkedlist_basic.c => linkedlist_func.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) rename linkedlist_basic.c => linkedlist_func.c (97%) diff --git a/linkedlist_basic.c b/linkedlist_func.c similarity index 97% rename from linkedlist_basic.c rename to linkedlist_func.c index 1b1aba0..421ce0e 100644 --- a/linkedlist_basic.c +++ b/linkedlist_func.c @@ -1,3 +1,7 @@ +/* +Author By Akhil Ravindran +github.com/ghostjson +*/ #include #include @@ -151,4 +155,4 @@ void main(){ print_links(node); // print all nodes -} \ No newline at end of file +}