Untitled
unknown
plain_text
8 months ago
2.7 kB
6
Indexable
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
struct node *prev;
};
struct node *head = NULL;
void createlist()
{
struct node *n1, *n2, *n3, *n4, *n5, *n6, *n7;
n1 = (struct node *)malloc(sizeof(struct node));
n2 = (struct node *)malloc(sizeof(struct node));
n3 = (struct node *)malloc(sizeof(struct node));
n4 = (struct node *)malloc(sizeof(struct node));
n5 = (struct node *)malloc(sizeof(struct node));
n6 = (struct node *)malloc(sizeof(struct node));
n7 = (struct node *)malloc(sizeof(struct node));
n1->data = 10;
n2->data = 20;
n3->data = 30;
n4->data = 40;
n5->data = 50;
n6->data = 60;
n7->data = 70;
n1->prev = NULL;
n1->next = n2;
n2->prev = n1;
n2->next = n3;
n3->prev = n2;
n3->next = n4;
n4->prev = n3;
n4->next = n5;
n5->prev = n4;
n5->next = n6;
n6->prev = n5;
n6->next = n7;
n7->prev = n6;
n7->next = NULL;
head = n1;
}
void display()
{
struct node *temp = head;
while (temp != NULL)
{
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
void delete_at_head()
{
if (head == NULL)
return;
struct node *temp = head;
head = head->next;
if (head != NULL)
head->prev = NULL;
free(temp);
}
void delete_at_tail()
{
if (head == NULL)
return;
struct node *temp = head;
while (temp->next != NULL)
temp = temp->next;
if (temp->prev != NULL)
temp->prev->next = NULL;
else
head = NULL;
free(temp);
}
void delete_at_middle()
{
if (head == NULL)
return;
printf("Enter position to delete: ");
int position;
scanf("%d", &position);
if (position == 1)
{
delete_at_head();
return;
}
struct node *temp = head;
for (int i = 1; temp != NULL && i < position; i++)
temp = temp->next;
if (temp == NULL)
{
printf("Invalid position!\n");
return;
}
if (temp->next != NULL)
temp->next->prev = temp->prev;
if (temp->prev != NULL)
temp->prev->next = temp->next;
free(temp);
}
int main()
{
createlist();
printf("Your Doubly Linked List is: \n");
display();
delete_at_head();
printf("After deleting at head: \n");
display();
delete_at_tail();
printf("After deleting at tail: \n");
display();
delete_at_middle();
printf("After deleting at middle: \n");
display();
return 0;
}Editor is loading...
Leave a Comment