#include <stdio.h>
#include <stdlib.h>
// Node structure
struct node {
int data;
struct node* next;
};
struct node* head = NULL;
// Insert at beginning
void insertBeg(int x) {
struct node* newnode = (struct node*)malloc(sizeof(struct node));
newnode->data = x;
newnode->next = head;
head = newnode;
printf("Inserted at beginning\n");
}
// Insert at end
void insertEnd(int x) {
struct node* newnode = (struct node*)malloc(sizeof(struct node));
newnode->data = x;
newnode->next = NULL;
if (head == NULL) {
head = newnode;
} else {
struct node* temp = head;
while (temp->next != NULL)
temp = temp->next;
temp->next = newnode;
}
printf("Inserted at end\n");
}
// Delete from beginning
void deleteBeg() {
if (head == NULL) {
printf("List is empty\n");
return;
}
struct node* temp = head;
head = head->next;
free(temp);
printf("Deleted from beginning\n");
}
// Delete from end
void deleteEnd() {
if (head == NULL) {
printf("List is empty\n");
return;
}
struct node *temp = head, *prev;
if (head->next == NULL) {
free(head);
head = NULL;
} else {
while (temp->next != NULL) {
prev = temp;
temp = temp->next;
}
prev->next = NULL;
free(temp);
}
printf("Deleted from end\n");
}
// Display list
void display() {
struct node* temp = head;
if (temp == NULL) {
printf("List is empty\n");
return;
}
printf("Linked List: ");
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
// Main function
int main() {
int ch, x;
do {
printf("\n--- MENU ---\n");
printf("1.Insert Begin\n2.Insert End\n3.Delete Begin\n4.Delete End\n5.Display\n6.Exit\n");
printf("Enter choice: ");
scanf("%d", &ch);
switch (ch) {
case 1:
printf("Enter value: ");
scanf("%d", &x);
insertBeg(x);
break;
case 2:
printf("Enter value: ");
scanf("%d", &x);
insertEnd(x);
break;
case 3:
deleteBeg();
break;
case 4:
deleteEnd();
break;
case 5:
display();
break;
case 6:
printf("Exiting...\n");
break;
default:
printf("Invalid choice\n");
}
} while (ch != 6);
return 0;
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter