Skip to content

Latest commit

 

History

History
241 lines (237 loc) · 6.01 KB

contributing.md

File metadata and controls

241 lines (237 loc) · 6.01 KB

#include<stdio.h> #include<conio.h>

void insertAtBeginning(int); void insertAtEnd(int); void insertAtAfter(int,int); void deleteBeginning(); void deleteEnd(); void deleteSpecific(int); void display();

struct Node { int data; struct Node *previous, *next; }*head = NULL;

void main() { int choice1, choice2, value, location; clrscr(); while(1) { printf("\n*********** MENU *************\n"); printf("1. Insert\n2. Delete\n3. Display\n4. Exit\nEnter your choice: "); scanf("%d",&choice1); switch() { case 1: printf("Enter the value to be inserted: "); scanf("%d",&value); while(1) { printf("\nSelect from the following Inserting options\n"); printf("1. At Beginning\n2. At End\n3. After a Node\n4. Cancel\nEnter your choice: "); scanf("%d",&choice2); switch(choice2) { case 1: insertAtBeginning(value); break; case 2: insertAtEnd(value); break; case 3: printf("Enter the location after which you want to insert: "); scanf("%d",&location); insertAfter(value,location); break; case 4: goto EndSwitch; default: printf("\nPlease select correct Inserting option!!!\n"); } } case 2: while(1) { printf("\nSelect from the following Deleting options\n"); printf("1. At Beginning\n2. At End\n3. Specific Node\n4. Cancel\nEnter your choice: "); scanf("%d",&choice2); switch(choice2) { case 1: deleteBeginning(); break; case 2: deleteEnd(); break; case 3: printf("Enter the Node value to be deleted: "); scanf("%d",&location); deleteSpecic(location); break; case 4: goto EndSwitch; default: printf("\nPlease select correct Deleting option!!!\n"); } } EndSwitch: break; case 3: display(); break; case 4: exit(0); default: printf("\nPlease select correct option!!!"); } } }

void insertAtBeginning(int value) { struct Node newNode; newNode = (struct Node)malloc(sizeof(struct Node)); newNode -> data = value; newNode -> previous = NULL; if(head == NULL) { newNode -> next = NULL; head = newNode; } else { newNode -> next = head; head = newNode; } printf("\nInsertion success!!!"); } void insertAtEnd(int value) { struct Node newNode; newNode = (struct Node)malloc(sizeof(struct Node)); newNode -> data = value; newNode -> next = NULL; if(head == NULL) { newNode -> previous = NULL; head = newNode; } else { struct Node *temp = head; while(temp -> next != NULL) temp = temp -> next; temp -> next = newNode; newNode -> previous = temp; } printf("\nInsertion success!!!");
} void insertAfter(int value, int location) { struct Node newNode; newNode = (struct Node)malloc(sizeof(struct Node)); newNode -> data = value; if(head == NULL) { newNode -> previous = newNode -> next = NULL; head = newNode; } else { struct Node *temp1 = head, temp2; while(temp1 -> data != location) { if(temp1 -> next == NULL) { printf("Given node is not found in the list!!!"); goto EndFunction; } else { temp1 = temp1 -> next; } } temp2 = temp1 -> next; temp1 -> next = newNode; newNode -> previous = temp1; newNode -> next = temp2; temp2 -> previous = newNode; printf("\nInsertion success!!!"); } EndFunction: } void deleteBeginning() { if(head == NULL) printf("List is Empty!!! Deletion not possible!!!"); else { struct Node *temp = head; if(temp -> previous == temp -> next) { head = NULL; free(temp); } else{ head = temp -> next; head -> previous = NULL; free(temp); } printf("\nDeletion success!!!"); } } void deleteEnd() { if(head == NULL) printf("List is Empty!!! Deletion not possible!!!"); else { struct Node *temp = head; if(temp -> previous == temp -> next) { head = NULL; free(temp); } else{ while(temp -> next != NULL) temp = temp -> next; temp -> previous -> next = NULL; free(temp); } printf("\nDeletion success!!!"); } } void deleteSpecific(int delValue) { if(head == NULL) printf("List is Empty!!! Deletion not possible!!!"); else { struct Node *temp = head; while(temp -> data != delValue) { if(temp -> next == NULL) { printf("\nGiven node is not found in the list!!!"); goto FuctionEnd; } else { temp = temp -> next; } } if(temp == head) { head = NULL; free(temp); } else { temp -> previous -> next = temp -> next; free(temp);
} printf("\nDeletion success!!!"); } FuctionEnd: } void display() { if(head == NULL) printf("\nList is Empty!!!"); else { struct Node *temp = head; printf("\nList elements are: \n"); printf("NULL <--- "); while(temp -> next != NULL) { printf("%d <===> ",temp -> data); } printf("%d ---> NULL", temp -> data); } }