This Program is Doubly Linked List and performing all operation on the list. This is a part of Mumbai University MCA Colleges Data Structure C program MCA Sem 2
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
void create(int num);
void add_at_beg(int num);
void add_after(int num,int c);
void del (int num);
void display();
void count();
void rev();
void search();
int find(int num);
void sort();
struct node
{
struct node *prev;
struct node *next;
int info;
}*start,*q;
int num;
static int i=0;
void main()
{
int m,n,po,i,choice;
clrscr();
start=NULL;
printf(" DOUBLY LINKED LIST ");
while(1)
{
printf("\n\n--------------------------- MAIN MENU -----------------\n\n");
printf("1.CREATE.\n\n");
printf("2.ADD_AT_BEG.\n\n");
printf("3.ADD_AFTER.\n\n");
printf("4.DELETE.\n\n");
printf("5.DISPLAY.\n\n");
printf("6.COUNT.\n\n");
printf("7.REVERSE.\n\n");
printf("8.SORT.\n\n");
printf("9.SEARCH.\n\n");
printf("10.EXIT.\n\n");
printf("Enter your choice : ");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("\n\n------------------------- CREATION OF LIST ---------------------------\n\n");
printf("\n\nEnter The Number of Nodes You Want : ");
scanf("%d",&n);
printf("\n\nEnter %d Elements : ",n);
for(i=0;i<n;i++)
{
scanf("%d",&m);
create(m);
}
break;
case 2:
printf("\n\n--------------- ADD AT BEGINING ----------------\n\n");
printf("\n\nEnter The Elements : ");
scanf("%d",&m);
add_at_beg(m);
break;
case 3:
printf("\n\n--------------- ADD AFTER ----------------\n\n");
printf("\n\nEnter The Elements : ");
scanf("%d",&m);
printf("\n\nEnter The Position after which u want to insert :");
scanf("%d",&po);
add_after(m,po);
break;
case 4:
printf("\n\n------------------ DELETION ------------------------\n\n");
printf("\n\nEnter The Element to be deleted : ");
scanf("%d",&m);
break;
case 5:
printf("\n\n--------------- DISPLAYING --------------------\n\n");
display();
break;
case 6:
count();
break;
case 7:
rev();
break;
case 8:
sort();
break;
case 9:
search();
break;
case 10: exit(1);
default:
printf("\n\nINVALID CHOICE!!!!!!!TRY AGAIN\n\n");
}
}
}
void create(int num)
{
struct node *q,*tmp;
tmp=malloc(sizeof(struct node));
tmp->info=num;
tmp->next=NULL;
if(start==NULL)
{
tmp->prev=NULL;
start->prev=tmp;
start=tmp;
}
else
{
q=start;
while(q->next!=NULL)
q=q->next;
q->next=tmp;
tmp->prev=q;
}
}
void add_at_beg(int num)
{
struct node *tmp;
tmp=malloc(sizeof(struct node));
tmp->prev=NULL;
tmp->info=num;
tmp->next=start;
start->prev=tmp;
start=tmp;
printf("\n\n------------------------ ELEMENTS IN THE LIST AFTER ADD_AT_BEG ------------------\n\n");
display();
}
void add_after(int num,int c)
{
struct node *tmp,*q;
int i;
q=start;
for(i=0;i<c;i++)
{
q=q->next;
if(q==NULL)
{
printf("\n\n----------------------------------------------------\n\n");
printf("THERE ARE LESS THAN %d ELEMENTS",c);
printf("\n\n------------------------------------------------\n\n");
return;
}
}
tmp=malloc(sizeof(struct node));
tmp->info=num;
q->next->prev=tmp;
tmp->next=q->next;
tmp->prev=q;
q->next=tmp;
printf("\n\n--------------------- ELEMENTS IN THE LIST AFTER ADD_AFTER -----------------\n\n");
display();
}
void del (int num)
{
struct node *tmp,*q;
if(start->info==num)
{
tmp=start;
start=start->next;
start->prev=NULL;
free(tmp);
printf("\n\n-------------- ELEMENTS IN THE LIST AFTER DELETION OF FIRST NODE ---------------\n\n");
display();
return;
}
q=start;
while(q->next->next!=NULL)
{
if(q->next->info==num)
{
tmp=q->next;
q->next=tmp->next;
tmp->next->prev=q;
free(tmp);
printf("\n\n--------------- ELEMENTS IN THE LIST AFTER DELETION OF INTERMEDIATE NODE -------\n\n");
display();
return;
}
q=q->next;
}
if(q->next->info==num)
{
tmp=q->next;
free(tmp);
q->next=NULL;
printf("\n\n------------- ELEMENTS IN THE LIST AFTER DELETION OF LAST NODE --------------\n\n");
display();
return;
}
printf("\n\n\---------------------------------------------------------------n\n");
printf("ELEMENT %d NOT FOUND");
printf("\n\n\-----------------------------------------------------------------n\n");
}
void display()
{
struct node *q;
if(start==NULL)
{
printf("\n\n\-----------------------------------------------------------------n\n");
printf("LIST IS EMPTY");
printf("\n\n\------------------------------------------------------------------n\n");
return;
}
q=start;
while(q!=NULL)
{
printf("%d\t",q->info);
q=q->next;
}
}
void count()
{
struct node *q=start;
int cnt=0;
while(q!=NULL)
{
q=q->next;
cnt++;
}
printf("\n\n------------------- NUMBER OF NODES IN THE LIST ---------------------\n\n");
printf("%d",cnt);
}
void rev()
{
struct node *p1,*p2;
printf("\n\n------------------- ORIGINAL LIST-------------------\n\n");
display();
p1=start;
p2=p1->next;
p1->next=NULL;
p1->prev=p2;
while(p2!=NULL)
{
p2->prev=p2->next;
p2->next=p1;
p1=p2;
p2=p2->prev;
}
start=p1;
printf("\n\n---------------------- REVERSED LIST -------------------\n\n");
display();
}
void search()
{
int found=0;
printf("\n\nEnter The number which is to be searched : ");
scanf("%d",&num);
q=start;
while((q!=NULL) && (found==0))
found=find(num);
if(found)
printf("\n\n------------------ THE NUMBER %d IS PRESENT IN THE LOCATION %d --------------",num,i);
else
printf("\n\n----------------- THE NUMBER IS NOT PRESENT IN THE LIST -------------");
getch();
}
int find(int num)
{
if (q->info == num )
{
return(1);
}
else
q=q->next;
i++;
return 0;
}
void sort()
{
struct node *q,*q1;
int c,a1,a2;
printf("\n\n-------------------------- ORIGINAL LIST-----------------\n\n");
display();
if(start==NULL)
{
printf("\n\n--------------------------------------------------\n\n");
printf("LIST IS EMPTY");
printf("\n\n-------------------------------------------------------\n\n");
}
else
{
q=start;
while(q!=NULL)
{
q1=q->next;
while(q1!=NULL)
{
a1=q->info;
a2=q1->info;
if(a1>a2)
{
q1->info=a1;
q->info=a2;
}
q1=q1->next;
}
q=q->next;
}
printf("\n\n---------------------------- SORTED LIST ---------------------------\n\n");
display();
}
}
Hope this Program is useful to you in some sense or other. Keep on following this blog for more Mumbai University MCA College Programs. Happy Programming and Studying.
Hope this Program is useful to you in some sense or other. Keep on following this blog for more Mumbai University MCA College Programs. Happy Programming and Studying.
No comments:
Post a Comment