diff --git a/tests/linkedlist b/tests/linkedlist new file mode 100755 index 0000000..b19ee0a Binary files /dev/null and b/tests/linkedlist differ diff --git a/tests/linkedlist.c b/tests/linkedlist.c new file mode 100644 index 0000000..8a278ba --- /dev/null +++ b/tests/linkedlist.c @@ -0,0 +1,73 @@ +#include "stdio.h" +#include "stdlib.h" + +struct node { + int data; + struct node *next; +}; + +struct node *head = NULL; +void add_first(int); +void add_last(int); +void traverse(); +void remove_first(); +void remove_last(); +int count = 0; +void display_menu(); + +int main(void) { + printf("Welcome!\n"); + + int selected, data; + + while (1) { + if (count == 100) { + exit(EXIT_SUCCESS); + } + + // show menu + display_menu(); + } + + printf("\nGoodbye!"); + return 0; +} + +void display_menu() { + + printf("1. Add first element\n"); + printf("2. Add last element\n"); + printf("3. Traverse element\n"); + printf("4. Remove first element\n"); + printf("5. Remove last element\n"); + +} + +void add_first(int element) { + // init node + struct node *node; + + // allocate the node for linkedlist + node = (struct node*)malloc(sizeof(struct node)); + + // add the data into node + node->data = element; + + // count the nodes, that added into data + count++; + + // check the head, if null put the data into it + if (head == NULL) { + // replace the node into head + head = node; + + // set the next of head into null + head->next = NULL; + + // return or end this process + return; + } + + node->next = head; + head = node; +} \ No newline at end of file diff --git a/tests/runLinkedlist b/tests/runLinkedlist new file mode 100755 index 0000000..12a5def --- /dev/null +++ b/tests/runLinkedlist @@ -0,0 +1,7 @@ +#!/bin/bash + +rm -r linkedlist + +gcc linkedlist.c -o linkedlist + +./linkedlist \ No newline at end of file