Doubly Circular Linklist
Doubly Circular Linklist
//Roll_No-67
#include <stdio.h>
#include <stdlib.h>
// Node structure
struct Node {
int data;
};
newNode->data = value;
newNode->next = NULL;
newNode->prev = NULL;
return newNode;
if (*head == NULL) {
*head = newNode;
(*head)->next = *head;
(*head)->prev = *head;
} else {
newNode->next = *head;
newNode->prev = (*head)->prev;
(*head)->prev->next = newNode;
(*head)->prev = newNode;
*head = newNode;
if (*head == NULL) {
*head = newNode;
(*head)->next = *head;
(*head)->prev = *head;
} else {
newNode->next = *head;
newNode->prev = (*head)->prev;
(*head)->prev->next = newNode;
(*head)->prev = newNode;
if (*head == NULL) {
printf("List is empty.\n");
} else {
(*head)->prev->next = (*head)->next;
(*head)->next->prev = (*head)->prev;
*head = (*head)->next;
free(temp);
if (*head == NULL) {
printf("List is empty.\n");
} else {
(*head)->prev = temp->prev;
temp->prev->next = *head;
free(temp);
do {
position++;
if (current->data == value) {
found = 1;
break;
current = current->next;
if (found) {
} else {
if (head == NULL) {
printf("List is empty.\n");
} else {
do {
current = current->next;
// Main function
int main() {
do {
scanf("%d", &choice);
switch (choice) {
case 1:
scanf("%d", &value);
insertAtBeginning(&head, value);
break;
case 2:
scanf("%d", &value);
insertAtLast(&head, value);
break;
case 3:
deleteFromBeginning(&head);
break;
case 4:
deleteFromLast(&head);
break;
case 5:
scanf("%d", &value);
search(head, value);
break;
case 6:
show(head);
break;
case 0:
break;
default:
return 0;
Output:-
1. Insert at Beginning
2. Insert at Last
3. Delete from Beginning
5. Search
6. Show
0. Exit
1. Insert at Beginning
2. Insert at Last
5. Search
6. Show
0. Exit
1. Insert at Beginning
2. Insert at Last
5. Search
6. Show
0. Exit
2. Insert at Last
5. Search
6. Show
0. Exit
1. Insert at Beginning
2. Insert at Last
5. Search
6. Show
0. Exit
1. Insert at Beginning
2. Insert at Last
5. Search
6. Show
0. Exit
30 10 20