Sorted Linked List

#include <cstdio> #include <cstdlib> struct Node { int data; Node *next; } *Head; int count() { int c = 0; for (Node *Current = Head; Current != NULL; Current = Current -> next) c++; return c; } int display() { if (Head == NULL) printf("List is Empty"); for (Node *Current = Head; Current != NULL; Current = Current -> next) printf("%d ", Current -> data); printf("\n\n"); } void add(int num) { Node *NewNode = (Node *) malloc(sizeof(Node)); NewNode -> data = num; NewNode -> next = NULL; if (Head != NULL) NewNode -> next = Head; Head = NewNode; } void addAfter(int num, int loc) { int i; Node *left, *right, *NewNode; right = Head; for (i = 0; i < loc; i++) { left = right; right = right -> next; } NewNode = (Node *) malloc(sizeof(Node)); NewNode -> data = num; left -> next = NewNode; NewNode -> next = right; } void append(int num) { Node *NewNode = (Node *) malloc(sizeof(Node)); NewNode -> data = num; NewNode -> next = NULL; Node *Current = Head; while (Current -> next != NULL) Current = Current -> next; Current -> next = NewNode; } void insert(int num) { int loc = 0; for (Node *Current = Head; Current != NULL; Current = Current -> next) if (Current -> data < num) loc++; if (loc == 0) add(num); else if (loc < count()) addAfter(num, loc); else append(num); } int Delete(int num) { for (Node *Current = Head, *Previous; Current != NULL; Previous = Current, Current = Current -> next) { if (Current -> data == num) { if (Current = Head) Head = Head -> next; else Previous -> next = Current -> next; free(Current); return 1; } } return 0; } int main() { int choice, num; Head = NULL; while (1) { printf("List Operations: \n"); printf("================\n"); printf("1. Add\n"); printf("2. Display\n"); printf("3. Delete\n"); printf("4. Size\n"); printf("5. Exit\n"); printf("Choice: "); scanf("%d", &choice); switch (choice) { case 1: { printf("Enter the Number to Add: "); scanf("%d", &num); insert(num); break; } case 2: { display(); break; } case 3: { if (Head == NULL) printf("List is Empty. Nothing to Delete.\n"); else { printf("Enter Number to Delete: "); scanf("%d", &num); if (Delete(num) == 1) printf("Successfully Deleted %d\n", num); else printf("%d Not Deleted.\nValue Might Not Found\n", num); } break; } case 4: { printf("Size of The list is %d\n", count()); break; } case 5: { exit(0); } default: { printf("Invalid Input. Try Again\n"); } } printf("\n\n"); } return 0; }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.