You are on page 1of 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