#include "header.h" int menu() { int value = 0; char c = '\0'; int running = 0; char temp[16]; NodePtr list = NULL; while (running == 0) { c = '\0'; printf("\n/**** Welcome ****\\\n"); printf("| 1. Insert\t |\n"); printf("| 2. Delete\t |\n"); printf("| 3. Print\t |\n"); printf("| 4. Exit\t |\n"); printf("|*****************|\n"); printf("Enter a Command Val: "); c = getchar(); getchar(); switch (c) { case('1') : //insert printf("Please enter an integer value: "); gets(temp); value = atoi(temp); insert(&list, value); printf("\n"); break; case('2') : //delete printf("Please enter an integer value: "); gets(temp); value = atoi(temp); printf("\n"); delete(&list, value); break; case('3') : //print print(list); break; case('4') : //exit printf("4\n"); running = 1; break; } } return 0; } int insert(NodePtr *list, int value) { //Nodes used to insert into list NodePtr newNode; NodePtr prevNode; NodePtr currNode; //allocate memory for node newNode = malloc(sizeof(Node)); //no space available if (newNode == NULL) { printf("Error node creation failed!\n"); return -1; } //assign variables to temp node newNode->value = value; prevNode = NULL; currNode = *list; //loop to current location while ((currNode != NULL) && (value > currNode->value)) { prevNode = currNode; currNode = currNode->next; } //front of list if (prevNode == NULL) { newNode->next = *list; *list = newNode; } //middle or end of list else { //insert new node between prevNode and currNode prevNode->next = newNode; newNode->next = currNode; } return 0; } //delete node of the value int delete(NodePtr *list, int value) { //Nodes used to insert into list NodePtr temp; NodePtr prevNode; NodePtr currNode; if (*list == NULL) { printf("List is empty.\n"); return -1; } if (value == (*list)->value) { temp = *list; *list = (*list)->next; free(temp); return value; } else { prevNode = *list; currNode = (*list)->next; while ((currNode != NULL) && (currNode->value != value)) { prevNode = currNode; currNode = currNode->next; } if (currNode != NULL) { temp = currNode; prevNode->next = currNode->next; free(temp); return value; } } } //This will print the contents of the list int print(NodePtr list) { if (list == NULL) { printf("\nList is empty.\n\n"); return 0; } else { printf("\nContents of the list:\n"); while (list != NULL) { printf(" Node %d -->", list->value); list = list->next; } printf(" NULL\n"); } }