Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- struct Node {
- int data = -1;
- Node *next = NULL;
- };
- int size(Node *Head) {
- int i = 0;
- for (Node *Current = Head; Current != NULL; Current = Current -> next)
- i++;
- return i;
- }
- void display(Node *Head) {
- if (Head == NULL)
- printf("List is Empty\n");
- for (Node *Current = Head; Current; Current = Current -> next)
- printf("%d ", Current -> data);
- printf("\n");
- }
- Node * insertNode(Node *Head) {
- int choice, loc, i;
- Node *Current, *Previous;
- Node *NewNode = new Node;
- printf("Enter data: ");
- scanf("%d", &NewNode -> data);
- printf("1. Add Node to The Beginning\n");
- printf("2. Add Node to The Ending\n");
- printf("3. Add Node to a Specific Location\n");
- printf("Choice: ");
- scanf("%d", &choice);
- if (choice == 1) {
- NewNode -> next = Head;
- Head = NewNode;
- }
- else if (choice == 2) {
- if (Head != NULL) {
- for (Current = Head; Current -> next != NULL; Current = Current -> next);
- Current -> next = NewNode;
- }
- else
- Head = NewNode;
- }
- else if (choice == 3) {
- printf("Enter the Location to Insert the Node: ");
- scanf("%d", &loc);
- int s = size(Head);
- if (s < loc || loc < 0)
- printf("Location Out of Bound\n\n");
- else {
- if (loc == 0) {
- NewNode -> next = Head;
- Head = NewNode;
- }
- else {
- for (i = 0, Current = Head; Current -> next != NULL; Current = Current -> next, i++) {
- if (i == loc) {
- i = -1;
- break;
- }
- else
- Previous = Current;
- }
- if (i == -1) {
- Previous -> next = NewNode;
- NewNode -> next = Current;
- }
- else if (s == loc)
- Current -> next = NewNode;
- }
- }
- }
- return Head;
- }
- Node * removeNode(Node *Head) {
- if (Head == NULL)
- printf("List is Empty\nNothing to Remove\n");
- else {
- int loc, i;
- Node *Current, *Previous;
- printf("Enter the Location of the Node to Remove: ");
- scanf("%d", &loc);
- for (i = 0, Current = Head; Current != NULL; Current = Current -> next, i++) {
- if (i == loc) {
- if (Current == Head)
- Head = Head -> next;
- else
- Previous -> next = Current -> next;
- delete Current;
- i = -1;
- break;
- }
- else
- Previous = Current;
- }
- if (i != -1)
- printf("Location Not Found\n\n");
- }
- return Head;
- }
- int main() {
- Node *Head = NULL;
- int choice;
- while (1) {
- printf("==============\n");
- printf("1. Add\n");
- printf("2. Remove\n");
- printf("3. Display All\n");
- printf("4. Exit\n");
- printf("==============\n");
- printf("Choice: ");
- scanf("%d", &choice);
- if (choice == 1)
- Head = insertNode(Head);
- else if (choice == 2)
- Head = removeNode(Head);
- else if (choice == 3)
- display(Head);
- else if (choice == 4)
- break;
- else
- printf("Invalid Input. Try Again\n");
- printf("\n\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement