0% found this document useful (0 votes)
6 views

Doubly Linked List Program

Uploaded by

rutikrathod740
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Doubly Linked List Program

Uploaded by

rutikrathod740
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

#include <stdio.

h>
#include <conio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
struct node *prev;
};
void create();
void insert_at_frist();
void insert_at_pos ();
void insert_at_last();
void delete_at_frist();
void delete_at_pos();
void delete_at_last();
void display();
struct node *head, *tail, *temp;
int main()
{
int choice;

do
{
printf("\n\n*********Main Menu*********\n");
printf("\nChoose one option from the following list ...\n");
printf("\n================================================\n");
printf("\n 1:Create");
printf("\n 2:Insert at frit");
printf("\n 3:Insart at pos");
printf("\n 4:Insart at last");
printf("\n 5:Delete at frist");
printf("\n 6:Delete at pos");
printf("\n 7:Delete at last");
printf("\n 8:Display");
printf("\n 10:Exit");
printf("\n===============================================\n");
printf("\n Enter your choice");
scanf("\n%d", &choice);
switch (choice)
{
case 1:
create();
break;
case 2:
insert_at_frist();
break;
case 3:
insert_at_pos();
break;
case 4:
insert_at_last();
break;
case 5:
delete_at_frist();
break;
case 6:
delete_at_pos();
break;
case 7:
delete_at_last();
break;
case 8:
display();
break;
case 9:
exit(0);
break;
default:
printf("\n Wrong choice");
}

} while (choice != 10);


return 0;
}
// CreateFunction
void create()
{
int ch;
struct node *newnode;
newnode = (struct node *)malloc(sizeof(struct node));
printf("Enter data");
scanf("%d", &newnode->data);
newnode->prev = 0, newnode->next = 0;
if (head == 0)
{
head = tail = newnode;
}
else
{
tail->next = newnode;
newnode->prev = tail;
tail = newnode;
}
printf("\n want to continue");
ch = getch();
while (ch == 'y' || ch == 'Y')
{
newnode = (struct node *)malloc(sizeof(struct node));
printf("Enter data");
scanf("%d", &newnode->data);
newnode->prev = 0, newnode->next = 0;
if (head == 0)
{
head = tail = newnode;
}
else
{
tail->next = newnode;
newnode->prev = tail;
tail = newnode;
}
printf("\n want to continue");
ch = getch();
}
}

void display()
{
if (head == NULL)
printf("\n list is empty");
else
{
temp = head;
while (temp != NULL)
{
printf("\n%d", temp->data);
temp = temp->next;
}
}
}

void insert_at_frist()
{
if (head == NULL)
printf("\n list is empty");
else
{
struct node *newnode;
newnode = newnode = (struct node *)malloc(sizeof(struct node));
printf("Enter data");
scanf("%d", &newnode->data);
newnode->prev = 0, newnode->next = 0;

head->prev = newnode;
newnode->next = head;
head = newnode;
}
}

void insert_at_last()
{
if (head == NULL)
printf("\n list is empty");
else
{

struct node *newnode, *tail;


newnode = newnode = (struct node *)malloc(sizeof(struct node));
printf("Enter data");
scanf("%d", &newnode->data);
newnode->prev = 0, newnode->next = 0;
while (tail->next != NULL)
{
tail = tail->next;
}
tail->next = newnode;
newnode->prev = tail;
tail = newnode;
}
}
void insert_at_pos()
{
if (head == NULL)
printf("\n list is empty");
else
{
struct node *newnode, *tail;
int pos, i = 1;
newnode = newnode = (struct node *)malloc(sizeof(struct node));
printf("Enter data");
scanf("%d", &newnode->data);
newnode->prev = 0, newnode->next = 0;
printf("Enter position");
scanf("%d", &pos);
if (pos == 1)
{
insert_at_frist();
}
else
{

while (i < pos - 1)


{
tail = tail->next;
i++;
}
newnode->prev = temp;
newnode->next = tail->next;
temp->next = newnode;
newnode->next->prev = newnode;
}
}
}

void delete_at_frist(){
struct node *newnode;
if (head == NULL)
printf("\n list is empty");
else
{
temp = head;
head = head->next;
head->prev = 0;
free(temp);
}
printf("deleted data:%d",temp->data);
}

void delete_at_last()
{
struct node *newnode;
if (head == NULL)
printf("\n list is empty");
else
{
temp=tail;
tail=tail->prev;
tail->next=0;
free(temp);
}
printf("deleted data:%d",temp->data);

void delete_at_pos()
{
struct node *newnode;
int pos, i = 1;
temp=head;
if (head == NULL)
printf("\n list is empty");
else
{
printf("Enter position");
scanf("%d", &pos);
while(i < pos - 1)
{
temp = temp->next;
i++;
}
temp->prev->next = temp->next;
temp->next->prev = temp->prev;
free(temp);
}
printf("deleted data:%d",temp->data);

You might also like