A69 DS Ass10
A69 DS Ass10
Assignment No-X
Singly Circular Linked List:
Program:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node{
int data;
struct node *next;
};
void main()
{
struct node *start=NULL;
int item,ch,k;
while(1)
{
printf("\n***************Select Option***********************\n");
printf("1.Insert at the beginning of the list.\n");
printf("2.Insert at the end of the list.\n");
printf("3.Insert at the middle of the list.\n");
printf("4.Delete from the beginning of the list.\n");
printf("5.Delete from the end of the list.\n");
printf("6.Delete from the middle of the list.\n");
printf("7.Display the list.\n");
printf("8.Exit.\n");
printf("***************************************************\n");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("Enter the element: \n");
scanf("%d",&item);
start=ins_beg(start,item);
break;
case 2:
printf("Enter the element: \n");
scanf("%d",&item);
start=ins_end(start,item);
break;
case 3:
printf("Enter element to be added: \n");
scanf("%d",&item);
printf("Enter element after which u want to add: \n");
scanf("%d",&k);
start=ins_mid(start,item,k);
break;
case 4:
start=del_beg(start);
break;
case 5:
start=del_end(start);
break;
case 6:
printf("Enter the element to be deleted: \n");
scanf("%d",&item);
start=del_mid(start,item);
break;
case 7:
display(start);
break;
case 8:
exit(1);
default:
printf("Wrong Choic:(\n");
}
}
}
return s;
}
Program:
#include <stdio.h>
#include <stdlib.h>
// Function prototypes
struct node* insert_head(struct node* head, int data);
struct node* insert_end(struct node* head, int data);
struct node* insert_after(struct node* head, int target_data, int data);
struct node* delete_head(struct node* head);
struct node* delete_end(struct node* head);
struct node* delete_node(struct node* head, int data);
void display(struct node* head);
int main() {
struct node* head = NULL;
int choice, data, target_data;
while (1) {
printf("\nCircular Doubly Linked List Menu:\n");
printf("1. Insert at head\n");
printf("2. Insert at end\n");
printf("3. Insert after a specific node\n");
printf("4. Delete head node\n");
printf("5. Delete end node\n");
printf("6. Delete a specific node\n");
printf("7. Display the list\n");
printf("8. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter data to insert at head: ");
scanf("%d", &data);
head = insert_head(head, data);
break;
case 2:
printf("Enter data to insert at end: ");
scanf("%d", &data);
head = insert_end(head, data);
break;
case 3:
printf("Enter target data to insert after: ");
scanf("%d", &target_data);
printf("Enter data to insert: ");
scanf("%d", &data);
head = insert_after(head, target_data, data);
break;
case 4:
head = delete_head(head);
break;
case 5:
head = delete_end(head);
break;
case 6:
printf("Enter data to delete: ");
scanf("%d", &data);
head = delete_node(head, data);
break;
case 7:
printf("List contents:\n");
display(head);
break;
case 8:
printf("Exiting...\n");
// Free all nodes before exiting
while (head != NULL) {
head = delete_head(head);
}
exit(0);
default:
printf("Invalid choice, please try again.\n");
break;
}
}
return 0;
}
Output: