Professional Documents
Culture Documents
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");
}
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
{
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);