www.geocities.com/pradheepkumar
Home
Page
|
Home page |
Visit www.geocities.com/pradheepkumar/tech.htm
for more
DATA STRUCTURES LAB PROGRAMS
//Binary Tree Operations
# include <stdio.h>
# include <malloc.h>
typedef struct node
{
int data;
struct node *lchild, *rchild;
} node;
node *root=NULL;
node *search(int item)
{
node *temp=root,*prev=NULL;
while (temp)
{
if (item<temp->data)
{
prev=temp;
temp=temp->lchild;
}
else if (item>temp->data)
{
prev=temp;
temp=temp->rchild;
}
else
temp=prev=NULL;
}
return(prev);
}
node *insert(node *rt)
{
node *prev=NULL;
node *newnode=(node *)malloc(sizeof(node));
newnode->lchild=newnode->rchild=NULL;
printf ("\nEnter the new data : ");
scanf ("%d",&newnode->data);
if (!rt)
{
rt=newnode;
return(rt);
}
prev=search(newnode->data);
if (prev)
{
if (newnode->data<prev->data)
prev->lchild=newnode;
else
prev->rchild=newnode;
}
else
printf ("\nData exists - cannot
insert\n");
return(rt);
}
node *delet(node *temp, int
target)
{
node *temp1=NULL, *temp2=NULL;
if (temp&&target==temp->data)
{
if (temp->lchild==temp->rchild)
{
free(temp);
return NULL;
}
if (temp->rchild==NULL)
{
temp=temp1->lchild;
free(temp);
return(temp1);
}
else
{
temp1=temp2=temp->rchild;
while (temp1->lchild)
temp1=temp->lchild;
temp1->lchild=temp->lchild;
free(temp);
return(temp2);
}
}
if (!temp)
{
printf ("\nData does not exist\n");
return NULL;
}
if (target<temp->data)
temp->lchild=delet(temp->lchild,target);
else
temp->rchild=delet(temp->rchild,target);
return(temp);
}
void preorder(node *rt)
{
if (!root)
printf ("\nEmpty binary tree\n");
if (!rt)
return;
preorder(rt->lchild);
if (rt==root)
printf (" '%d'",rt->data);
else
printf (" %d",rt->data);
preorder(rt->rchild);
return;
}
int menu()
{
int choice;
printf ("\nBinary Tree Operations - Menu");
printf ("\n1 - Insert");
printf ("\n2 - Delete");
printf ("\n3 - Traverse");
printf ("\n4 - Exit");
printf ("\nEnter choice : ");
scanf ("%d",&choice);
return (choice);
}
void main ()
{
int ch, target;
do
{
switch(ch=menu())
{
case 1 : root=insert(root);
break;
case 2 : printf ("\nEnter data to be deleted : ");
scanf
("%d",&target);
root=delet(root,target);
break;
case 3 : preorder(root);
break;
case 4 : break;
default : printf
("\nIllegal choice\n");
}
} while (ch!=4);
}
Output:
Binary Tree Operations - Menu
1 - Insert
2 - Delete
3 - Traverse
4 - Exit
Enter choice : 1
Enter the new data : 50
Enter the new data : 25
Enter the new data : 75
Enter the new data : 12
Enter the new data : 40
Enter the new data : 5
Enter the new data : 15
Enter the new data : 30
Enter the new data : 45
Enter the new data : 60
Enter the new data : 90
Binary Tree Operations - Menu
1 - Insert
2 - Delete
3 - Traverse
4 - Exit
Enter choice : 3
5 12 15 25 30 40 45 '50' 60 75 90
Binary Tree Operations - Menu
1 - Insert
2 - Delete
3 - Traverse
4 - Exit
Enter choice : 2
Enter data to be deleted : 15
Binary Tree Operations - Menu
1 - Insert
2 - Delete
3 - Traverse
4 - Exit
Enter choice : 3
5 12 25 30 40 45 '50' 60 75 90
Binary Tree Operations - Menu
1 - Insert
2 - Delete
3 - Traverse
4 - Exit
Enter choice : 4
//Merging two files
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
struct record {
int eno;
char ename[20];
};
typedef struct record emp;
void input(FILE *FP)
{
emp rec;
char ch;
do
{
printf ("\nEnter employee number :
");
scanf ("%d",&rec.eno);
printf ("\nEmployee name : ");
scanf ("%s",rec.ename);
fwrite(&rec,sizeof(emp),1,FP);
printf ("\nAny more records (y/n) :
");
scanf (" %c",&ch);
}while(ch!='n');
}
void merge()
{
FILE *fp1, *fp2, *fp3;
emp rec1,rec2;
fp1=fopen("File1.dat","r");
fp2=fopen("File2.dat","r");
fp3=fopen("File3.dat","w");
fread(&rec1,sizeof(emp),1,fp1);
fread(&rec2,sizeof(emp),1,fp2);
while(!(feof(fp1)||(feof(fp2))))
{
if (rec1.eno<=rec2.eno)
{
fwrite(&rec1,sizeof(emp),1,fp3);
fread(&rec1,sizeof(emp),1,fp1);
}
else
{
fwrite(&rec2,sizeof(emp),1,fp3);
fread(&rec2,sizeof(emp),1,fp2);
}
}
if (!feof(fp1))
while (!feof(fp1))
{
fwrite(&rec1,sizeof(emp),1,fp3);
fread(&rec1,sizeof(emp),1,fp1);
}
if (!feof(fp2))
while (!feof(fp2))
{
fwrite(&rec2,sizeof(emp),1,fp3);
fread(&rec2,sizeof(emp),1,fp2);
}
fcloseall();
}
void display(FILE *FP)
{
emp rec;
printf ("\nEmployee number\tEmployee name");
while(!feof(FP))
{
fread(&rec,sizeof(emp),1,FP);
if(!feof(FP))
printf
("\n\t%d\t%s",rec.eno,rec.ename);
}
}
void showmenu()
{
printf ("\n\nMerge Sort");
printf ("\n1 - Enter data for file one");
printf ("\n2 - Enter data for file two");
printf ("\n3 - Sort data");
printf ("\n4 - Print data");
printf ("\n5 - Exit");
printf ("\nEnter your choice : ");
}
void main()
{
char ch;
FILE *FP;
do
{
showmenu();
scanf (" %c",&ch);
switch(ch) {
case '1' : FP=fopen("File1.dat","a+");
input(FP);
fclose(FP);
break;
case '2' : FP=fopen("File2.dat","a+");
input(FP);
fclose(FP);
break;
case '3' : merge();
printf
("\n\nData sorted");
break;
case '4' : printf ("\nFile 1 contains :
");
FP=fopen("file1.dat","r");
display(FP);
fclose(FP);
printf
("\nFile 2 contains : ");
FP=fopen("file2.dat","r");
display(FP);
fclose(FP);
printf
("\nFile 3 contains : ");
FP=fopen("file3.dat","r");
display(FP);
fclose(FP);
break;
case '5' : exit(1);
default : printf
("\nIllegal choice");
}
}while(ch!='5');
}
Output:
Merge Sort
1 - Enter data for file one
2 - Enter data for file two
3 - Sort data
4 - Print data
5 - Exit
Enter your choice : 1
Enter employee number : 100
Employee name : Abhiram
Enter employee number : 200
Employee name : Balu
Enter employee number : 300
Employee name : Chandru
Enter employee number : 400
Employee name : Deepak
Enter employee number : 500
Employee name : Eipen
Merge Sort
1 - Enter data for file one
2 - Enter data for file two
3 - Sort data
4 - Print data
5 - Exit
Enter your choice : 2
Enter employee number : 50
Employee name : Raj
Enter employee number : 150
Employee name : Shaan
Enter employee number : 250
Employee name : Tarun
Enter employee number : 350
Employee name : Venkat
Enter employee number : 450
Employee name : Lendis
Merge Sort
1 - Enter data for file one
2 - Enter data for file two
3 - Sort data
4 - Print data
5 - Exit
Enter your choice : 3
Data sorted
Merge Sort
1 - Enter data for file one
2 - Enter data for file two
3 - Sort data
4 - Print data
5 - Exit
Enter your choice : 4
File 1 contains :
Employee number Employee name
100 Abhiram
200 Balu
300 Chandru
400 Deepak
500 Eipen
File 2 contains :
Employee number Employee name
50 Raj
150 Shaan
250 Tarun
350 Venkat
450 Lendis
File 3 contains :
Employee number Employee name
50 Raj
100 Abhiram
150 Shaan
200 Balu
250 Tarun
300 Chandru
350 Venkat
400 Deepak
450 Lendis
500 Eipen
Merge Sort
1 - Enter data for file one
2 - Enter data for file two
3 - Sort data
4 - Print data
5 - Exit
Enter your choice : 5
// Tree heap sort - key value
# include <stdio.h>
# include <conio.h>
typedef struct {
char name[20];
int no, age;
} record;
record stud[14];
int input ()
{
int no=0;
char ch;
do
{
++no;
printf ("\nEnter name : ");
scanf ("%s",stud[no].name);
printf ("Enter number : ");
scanf ("%d",&stud[no].no);
printf ("Enter age : ");
scanf ("%d",&stud[no].age);
printf ("Any more records (y/n) :
");
scanf (" %c",&ch);
fflush(stdin);
} while (ch!='n');
return no;
}
void display (int n)
{
int i;
for (i=1;i<=n;i++)
{
printf ("\nName : %s ",stud[i].name);
printf ("\n Age : %d ",stud[i].age);
printf ("\nNumber : %d
\n",stud[i].no);
}
}
void adjust (int i, int n)
{
int j=2*i;
record item=stud[i];
while (j<=n)
{
if
((j<n)&&(stud[j].no<stud[j+1].no))
j=j+1;
if (item.no>=stud[j].no)
break;
stud[j/2]=stud[j];
j=2*j;
}
stud[j/2]=item;
}
void heapify (int n)
{
int i;
for (i=n/2;i>=1;i--)
adjust (i,n);
}
void sort (int n)
{
int i;
record t;
heapify (n);
for (i=n;i>=2;i--)
{
t=stud[i];
stud[i]=stud[1];
stud[1]=t;
adjust (1,i-1);
}
}
void main ()
{
int no;
printf ("\n Heap Sort");
no=input();
sort (no);
display (no);
}
Output :
Heap Sort
Enter name : Raju
Enter number : 750
Enter age : 19
Any more records (y/n) : y
Enter name : Balu
Enter number : 700
Enter age : 18
Any more records (y/n) : y
Enter name : Chandru
Enter number : 725
Enter age : 19
Any more records (y/n) : y
Enter name : Deepak
Enter number : 675
Enter age : 19
Any more records (y/n) : y
Enter name : Shakthi
Enter number : 620
Enter age : 19
Any more records (y/n) : y
Enter name : Pawan
Enter number : 614
Enter age : 20
Any more records (y/n) : y
Enter name : Senthil
Enter number : 420
Enter age : 21
Any more records (y/n) : y
Enter name : Rajesh
Enter number : 710
Enter age : 19
Any more records (y/n) : y
Enter name : Satyan
Enter number : 400
Enter age : 18
Any more records (y/n) : y
Enter name : Abhiram
Enter number : 628
Enter age : 19
Any more records (y/n) : n
Name : Satyan
Age : 18
Number : 400
Name : Senthil
Age : 21
Number : 420
Name : Pawan
Age : 20
Number : 614
Name : Shakthi
Age : 19
Number : 620
Name : Abhiram
Age : 19
Number : 628
Name : Deepak
Age : 19
Number : 675
Name : Balu
Age : 18
Number : 700
Name : Rajesh
Age : 19
Number : 710
Name : Chandru
Age : 19
Number : 725
Name : Raju
Age : 19
Number : 750
//Address calculation
# include <stdio.h>
# include <math.h>
# include <malloc.h>
# define m 25
struct list
{
int info;
struct list *next;
};
typedef struct list *node;
node hashtable[25];
void create (node rec)
{
scanf ("%d",&rec->info);
if (rec->info==-9999)
{
rec->next=NULL;
return;
}
else
{
rec->next=(node)malloc(sizeof(node));
create(rec->next);
}
return;
}
void display(node rec)
{
if (rec!=NULL)
{
if (rec->info!=-9999)
{
printf ("
%d",rec->info);
display(rec->next);
}
}
return;
}
int largest (node start)
{
node save;
int big;
save=start;
big=save->info;
while (save!=NULL)
{
if(save->info>big)
big=save->info;
save=save->next;
}
return(big);
}
int hash (int largest, int
data)
{
int has, h;
has=ceil((float)largest/m);
if (has<0)
return 0;
h=data/has;
if (h<0)
h=0;
return h;
}
void addrcal_sort(int large,
node data)
{
node temp,p,s,temp1;
int random;
temp=data;
random=hash(large,data->info);
if (hashtable[random]==NULL)
{
temp->next=hashtable[random];
hashtable[random]=temp;
}
else
{
p=hashtable[random];
s=p->next;
if (p->info>temp->info)
{
hashtable[random]=temp;
temp->next=p;
p->next=s;
p=hashtable[random];
s=p->next;
}
while
((s!=NULL)&&(s->info<temp->info))
{
p=s;
s=s->next;
}
p->next=temp;
temp->next=s;
}
return;
}
node link (node start, node
temp, int i)
{
node p;
int j;
hashtable[i]=temp;
start=hashtable[i];
j=i+1;
while (j<m)
{
if (hashtable[j]!=NULL)
{
p=hashtable[i];
while (p->next!=NULL)
p=p->next;
p->next=hashtable[j];
i=j;
}
j++;
}
return start;
}
void disphashtable(node pos,
int n)
{
printf ("Hashtable %d : ",n);
while (pos)
{
printf (" %d",pos->info);
pos=pos->next;
}
printf ("\n");
}
void main ()
{
node start,s,p,head,temp,tmp,pass;
int i,k,n,lrg;
printf ("\nEnter the element of the list and input
-9999 to stop\n");
start=(node)malloc(sizeof(node));
create(start);
printf ("\n\tGiven list is : \n");
display(start);
for (k=0;k<m;k++)
hashtable[k]=(node)malloc(sizeof(node));
for (i=0;i<m;i++)
hashtable[i]=NULL;
lrg=largest(start);
head=start;
while (head!=NULL)
{
if (head->info!=-9999)
{
pass=(node)malloc(sizeof(node));
pass->info=head->info;
pass->next=NULL;
addrcal_sort(lrg,pass);
}
head=head->next;
}
printf ("\n\n\t Hash table entries \n");
for (n=1;n<=m;n++)
{
pass=hashtable[n];
disphashtable(pass,n);
}
i=0;
while ((hashtable[i]==NULL)&&(i<m))
++i;
tmp=hashtable[i];
start=link(start,tmp,i);
printf ("\n\nSorted list is : \n");
display(start);
}
Output:
Enter the element of the list
and input -9999 to stop
9
8
7
6
5
4
3
2
1
0
-9999
Given list is :
9 8 7 6 5 4 3 2 1 0
Hash table entries
Hashtable 1 : 1
Hashtable 2 : 2
Hashtable 3 : 3
Hashtable 4 : 4
Hashtable 5 : 5
Hashtable 6 : 6
Hashtable 7 : 7
Hashtable 8 : 8
Hashtable 9 : 9
Hashtable 10 :
Hashtable 11 :
Hashtable 12 :
Hashtable 13 :
Hashtable 14 :
Hashtable 15 :
Hashtable 16 :
Hashtable 17 :
Hashtable 18 :
Hashtable 19 :
Hashtable 20 :
Hashtable 21 :
Hashtable 22 :
Hashtable 23 :
Hashtable 24 :
Hashtable 25 :
Sorted list is :
0 1 2 3 4 5 6 7 8 9
//Dictionary
# include <stdio.h>
# include <string.h>
typedef struct
{
char word[32];
char mean[75];
} dict;
FILE *fpt1;
dict temp;
void create()
{
char ch;
char dn[15];
printf ("\nEnter the name of new dictionary :
");
scanf (" %s",dn);
fpt1=fopen(dn,"w+");
do
{
printf ("\nEnter the word : ");
scanf ("%s",temp.word);
printf ("\nEnter the meaning : ");
scanf (" %[^\n]s",temp.mean);
fprintf
(fpt1,"%s\t%s\n",temp.word,temp.mean);
fflush(stdin);
printf ("\nDo you want to continue (y/n)
: ");
scanf ("%c",&ch);
} while ((ch=='y')||(ch=='Y'));
fclose(fpt1);
}
void append()
{
char ch;
char dn[15];
printf ("\nEnter the name of the dictionary :
");
scanf (" %s",dn);
fpt1=fopen(dn,"a+");
if (fpt1==NULL)
printf ("\nNo such dictionary
exists");
else
{
do
{
printf ("\n\t %s
Dictionary",dn);
printf ("\n\t Enter the word
and its meaning");
printf ("\n\t Enter the word
: ");
scanf ("
%s",temp.word);
printf
("\n\tEnter the meaning : ");
scanf ("
%[^\n]s",temp.mean);
fprintf(fpt1,"%s\t%s\n",temp.word,temp.mean);
fflush(stdin);
printf ("\nDo you want to
continue (y/n) : ");
scanf (" %c",&ch);
} while ((ch=='y')||(ch=='Y'));
}
fclose(fpt1);
}
void search()
{
char wrd[10];
char dn[15];
printf ("\nEnter the name of the dictionary :
");
scanf ("%s",dn);
fpt1=fopen(dn,"r+");
rewind(fpt1);
if (fpt1==NULL)
printf ("\nNo such dictionary
exists");
else
{
printf ("\nEnter the word whose meaning
is required");
printf ("\nThe word : ");
scanf (" %s",wrd);
while (!feof(fpt1))
{
fscanf
(fpt1,"%s\t%s\n",temp.word,temp.mean);
if (strcmp(wrd,temp.word)==0)
{
printf ("\nThe
meaning is : %s",temp.mean);
goto l;
}
}
printf ("\nWord not found");
l : fclose(fpt1);
}
}
void display()
{
char dn[15];
printf ("\nEnter the name of the dictionary :
");
scanf (" %s",dn);
fpt1=fopen(dn,"r+");
if (fpt1==NULL)
printf ("\nNo such
dictionary exists");
else
{
rewind(fpt1);
printf ("\n\n %s Dictionary list",
dn);
printf ("\n Word \t : Meaning \n");
while (!feof(fpt1))
{
fscanf
(fpt1,"%s\t%s\n",temp.word,temp.mean);
printf ("\n
%s\t%s\n",temp.word,temp.mean);
}
}
}
void main ()
{
int ch;
do
{
printf ("\n\nDictionary");
printf ("\n1 - Create new
dictionary");
printf ("\n2 - Add new words");
printf ("\n3 - Find meaning");
printf ("\n4 - Display all words");
printf ("\n5 - Exit");
printf ("\nEnter choice : ");
scanf ("%d",&ch);
switch (ch)
{
case 1 : create ();
break;
case 2 : append();
break;
case 3 : search();
break;
case 4 : display();
break;
case 5 : break;
default : printf ("\nIllegal choice");
}
printf ("\n");
} while (ch!=5);
}
Output:
Dictionary
1 - Create new dictionary
2 - Add new words
3 - Find meaning
4 - Display all words
5 - Exit
Enter choice : 1
Enter the name of new
dictionary : english
Enter the word : alter
Enter the meaning : change
Do you want to continue (y/n)
: y
Enter the word : abdicate
Enter the meaning : renounce
Do you want to continue (y/n)
: y
Enter the word : abduct
Enter the meaning : kidnap
Do you want to continue (y/n)
: y
Enter the word : abide
Enter the meaning : accept
Do you want to continue (y/n)
: y
Enter the word : disrobe
Enter the meaning : undress
Do you want to continue (y/n)
: y
Enter the word : err
Enter the meaning : mistake
Do you want to continue (y/n)
: y
Enter the word : modify
Enter the meaning : change
Do you want to continue (y/n)
: y
Enter the word : retrieve
Enter the meaning : obtain
Do you want to continue (y/n)
: y
Enter the word : malady
Enter the meaning : illness
Do you want to continue (y/n)
: y
Enter the word : view
Enter the meaning : display
Do you want to continue (y/n)
: n
Dictionary
1 - Create new dictionary
2 - Add new words
3 - Find meaning
4 - Display all words
5 - Exit
Enter choice : 2
Enter the name of the
dictionary : english
english Dictionary
Enter the word and its meaning
Enter the word : curb
Enter the meaning : restrain
Do you want to continue (y/n)
: n
Dictionary
1 - Create new dictionary
2 - Add new words
3 - Find meaning
4 - Display all words
5 - Exit
Enter choice : 4
Enter the name of the
dictionary : english
english Dictionary list
Word : Meaning
alter change
abdicate renounce
abduct kidnap
abide accept
disrobe undress
err mistake
modify change
retrieve obtain
malady illness
view display
curb restrain
Dictionary
1 - Create new dictionary
2 - Add new words
3 - Find meaning
4 - Display all words
5 - Exit
Enter choice : 3
Enter the name of the
dictionary : english
Enter the word whose meaning
is required
The word : curb
The meaning is : restrain
Dictionary
1 - Create new dictionary
2 - Add new words
3 - Find meaning
4 - Display all words
5 - Exit
Enter choice : 5
//File retrieval by
contiguous allocation
# include <stdio.h>
# include <conio.h>
typedef struct
{
int no,marks;
char name[32];
} record;
record stud[13];
void adjust(int i, int n)
{
int j=2*i;
record item=stud[i];
while (j<=n)
{
if
((j<n)&&(stud[j].no<stud[j+1].no))
j=j+1;
if (item.no>=stud[j].no)
break;
stud[j/2]=stud[j];
j=2*j;
}
stud[j/2]=item;
}
void heapify (int n)
{
int i;
for (i=n/2;i>=1;i--)
adjust(i,n);
}
void sort (int n)
{
FILE *fp;
record t;
int i;
heapify(n);
for (i=n;i>=2;i--)
{
t=stud[i];
stud[i]=stud[1];
stud[1]=t;
adjust(1,i-1);
}
fp=fopen("test.dat","w");
for (i=1;i<=n;i++)
fwrite(&stud[i],sizeof(record),1,fp);
}
int input (int i)
{
FILE *fp;
char ch;
if (i!=0)
{
fp=fopen("test.dat","r");
fread(&stud[1],sizeof(record),i,fp);
fclose(fp);
}
fp=fopen("test.dat","a");
do
{
i++;
fflush(stdin);
printf ("Enter student name : ");
scanf(" %[^\n]s",stud[i].name);
printf ("Enter student number : ");
scanf ("%d",&stud[i].no);
printf ("Enter student marks : ");
scanf ("%d",&stud[i].marks);
fwrite(&stud[i],sizeof(stud[i]),1,fp);
printf ("Any more records (y/n) :
");
scanf (" %c",&ch);
} while ((ch=='y')||(ch=='Y'));
sort (i);
fclose(fp);
return i;
}
void display ()
{
record rec;
FILE *fp;
fp=fopen("test.dat","r");
if (!fp)
{
printf ("\nNo records");
fclose (fp);
}
else
{
do
{
fread (&rec,
sizeof(record),1,fp);
if (feof(fp))
break;
printf ("\nName : %s\nRoll
number : %d",rec.name,rec.no);
printf ("\nMarks :
%d\n",rec.marks);
} while (!feof(fp));
fclose(fp);
}
}
void retrieve (int num)
{
int i;
record rec;
FILE *fp;
fp=fopen("test.dat","r");
if (!fp)
{
printf ("\n No records");
fclose (fp);
return;
}
else
{
for (i=1;;i++)
{
fread(&rec,sizeof(record),1,fp);
if (feof(fp)||rec.no>num)
{
printf
("\nRecord not found\nc");
fclose(fp);
return;
}
else if (rec.no==num)
{
printf ("\nName
: %s",rec.name);
printf ("\nRoll
number : %d",rec.no);
printf ("\nMarks
: %d\n",rec.marks);
fclose(fp);
return;
}
}
}
}
void main ()
{
int ch, i=0, no;
do
{
printf ("\nMenu\n1 - Insert\n2 -
Retrieve\n3 - Display");
printf ("\n4 - Exit\nEnter choice :
");
scanf ("%d",&ch);
switch(ch)
{
case 1 : i=input(i);
break;
case 2 : printf ("\nEnter
the roll number : ");
scanf ("%d",&no);
retrieve(no);
break;
case 3 : display();
break;
case 4 : break;
default : printf ("\nIllegal choice\n");
}
} while (ch!=4);
}
Output:
Menu
1 - Insert
2 - Retrieve
3 - Display
4 - Exit
Enter choice : 1
Enter student name : Abhiram
Enter student number : 601
Enter student marks : 87
Any more records (y/n) : y
Enter student name : Balu
Enter student number : 605
Enter student marks : 89
Any more records (y/n) : y
Enter student name : Chandran
Enter student number : 610
Enter student marks : 76
Any more records (y/n) : y
Enter student name : Deepak
Enter student number : 615
Enter student marks : 87
Any more records (y/n) : y
Enter student name : Shilpa
Enter student number : 618
Enter student marks : 67
Any more records (y/n) : y
Enter student name : John
Enter student number : 630
Enter student marks : 78
Any more records (y/n) : y
Enter student name : Shakthi
Enter student number : 620
Enter student marks : 84
Any more records (y/n) : y
Enter student name : Preeti
Enter student number : 625
Enter student marks : 88
Any more records (y/n) : y
Enter student name : Zahid
Enter student number : 645
Enter student marks : 88
Any more records (y/n) : y
Enter student name : Venkat
Enter student number : 642
Enter student marks : 86
Any more records (y/n) : n
Menu
1 - Insert
2 - Retrieve
3 - Display
4 - Exit
Enter choice : 3
Name : Abhiram
Roll number : 601
Marks : 87
Name : Balu
Roll number : 605
Marks : 89
Name : Chandran
Roll number : 610
Marks : 76
Name : Deepak
Roll number : 615
Marks : 87
Name : Shilpa
Roll number : 618
Marks : 67
Name : John
Roll number : 630
Marks : 78
Name : Shakthi
Roll number : 620
Marks : 84
Name : Preeti
Roll number : 625
Marks : 88
Name : Zahid
Roll number : 645
Marks : 88
Name : Venkat
Roll number : 642
Marks : 86
Menu
1 - Insert
2 - Retrieve
3 - Display
4 - Exit
Enter choice : 2
Enter the roll number : 645
Name : Zahid
Roll number : 645
Marks : 88
Menu
1 - Insert
2 - Retrieve
3 - Display
4 - Exit
Enter choice : 4
//Quick Sort
# include <stdio.h>
# include <conio.h>
int n;
void qsort(int b[], int left,
int right)
{
int i,j,p,tmp,finish;
if (right>left)
{
i=left;
j=right;
p=b[left];
finish=0;
while (!finish)
{
do
{
++i;
} while
((b[i]<=p)&&(i<=right));
while
((b[j]>=p)&&(j>left))
--j;
if (j<i)
finish=1;
else
{
tmp=b[i];
b[i]=b[j];
b[j]=tmp;
}
}
tmp=b[left];
b[left]=b[j];
b[j]=tmp;
qsort(b,left,j-1);
qsort(b,i,right);
}
return;
}
void main ()
{
int a[20], i, l, r;
clrscr();
printf ("\nNo. of elements in vector : ");
scanf ("%d",&n);
printf ("\nInput elements of vector \n");
for (i=0;i<n;i++)
scanf ("%d",&a[i]);
printf ("\n");
l=0;
r=n-1;
qsort(a,l,r);
printf ("\nQuick sorted vector is : \n");
for (i=0;i<n;i++)
printf ("%5d",a[i]);
}
Output:
No. of elements in vector : 5
Input elements of vector
3
4
2
1
5
Quick sorted vector is :
1 2
3 4 5
//Doubly Linked List
# include <stdio.h>
# include <malloc.h>
typedef struct node
{
int data;
struct node *next, *prev;
} node;
node *first;
node *create (node *front)
{
node *temp, *previous;
int i,no;
front=previous=NULL;
printf ("\nEnter the number of elements : ");
scanf ("%d",&no);
for (i=1;i<=no;i++)
{
temp=(node *)malloc(sizeof(node));
temp->next=temp->prev=NULL;
printf ("Enter data : ");
scanf ("%d",&temp->data);
if (!front)
front=temp;
else
{
previous->next=temp;
temp->prev=previous;
}
previous=temp;
}
temp->next=NULL;
return(front);
}
node *insert(node *front)
{
int pos;
int i=1;
node *cur=front;
node *newnode=(node *)malloc(sizeof(node));
newnode->prev=newnode->next=NULL;
printf ("\nEnter new data : ");
scanf ("%d",&newnode->data);
printf ("\nEnter position : ");
scanf ("%d",&pos);
if ((pos==1)||(front==NULL))
{
newnode->next=front;
front=newnode;
return(front);
}
else
{
while
((i<pos-1)&&(cur->next!=NULL))
{
cur=cur->next;
i++;
}
newnode->next=cur->next;
newnode->prev=cur;
cur->next=newnode;
cur->next->prev=newnode;
}
return(front);
}
node *delet(node *front)
{
int target;
node *cur=front;
if (!front)
printf ("\nList is empty\n");
else
{
printf ("\nEnter data to be deleted :
");
scanf ("%d",&target);
while (cur&&(cur->data!=target))
cur=cur->next;
if (!cur)
printf ("\nData not
found\n");
else
{
if
((cur==front)&&(cur->next==NULL))
{
front=NULL;
free(cur);
}
else if (cur==front)
{
front->next->prev=NULL;
front=front->next;
free(cur);
}
else if (cur->next==NULL)
{
cur->prev->next=NULL;
free(cur);
}
else
{
cur->prev->next=cur->next;
cur->next->prev=cur->prev;
}
}
}
return(front);
}
void display (node *front)
{
if (front)
{
printf ("->%d",front->data);
display(front->next);
}
}
int menu()
{
int ch;
printf ("\n\nDoubly Linked List - Menu");
printf ("\n1 - Create");
printf ("\n2 - Insert");
printf ("\n3 - Delete");
printf ("\n4 - Display");
printf ("\n5 - Exit");
printf ("\nEnter choice : ");
scanf ("%d",&ch);
return (ch);
}
void main ()
{
int choice;
do
{
switch(choice=menu())
{
case 1 : first=create(first);
printf ("\nHead");
display(first);
break;
case 2 : first=insert(first);
printf ("\nHead");
display(first);
break;
case 3 : first=delet(first);
printf ("\nHead");
display(first);
break;
case 4 : printf
("\nHead");
display(first);
break;
case 5 : break;
default : printf ("\nIllegal choice\n");
}
} while (choice!=5);
}
Output :
Doubly Linked List - Menu
1 - Create
2 - Insert
3 - Delete
4 - Display
5 - Exit
Enter choice : 1
Enter the number of elements :
10
Enter data : 1
Enter data : 2
Enter data : 3
Enter data : 4
Enter data : 6
Enter data : 7
Enter data : 8
Enter data : 9
Enter data : 10
Enter data : 11
Head->1->2->3->4->6->7->8->9->10->11
Doubly Linked List - Menu
1 - Create
2 - Insert
3 - Delete
4 - Display
5 - Exit
Enter choice : 2
Enter new data : 5
Enter position : 5
Head->1->2->3->4->5->6->7->8->9->10->11
Doubly Linked List - Menu
1 - Create
2 - Insert
3 - Delete
4 - Display
5 - Exit
Enter choice : 3
Enter data to be deleted : 9
Head->1->2->3->4->5->6->7->8->10->11
Doubly Linked List - Menu
1 - Create
2 - Insert
3 - Delete
4 - Display
5 - Exit
Enter choice : 5
// Linked list operations
# include <stdio.h>
# include <malloc.h>
typedef struct list_element
{
char name[32];
int empno;
int age;
char sex;
struct list_element *next;
} node;
void main ()
{
node *first=NULL;
int choice;
int menu();
node *create(node *);
node *insert(node *);
node *delet(node *);
void display(node *);
do
{
choice=menu();
switch(choice)
{
case 1 :
first=create(first);
printf
("\nCreated LIST : \n");
display(first);
continue;
case 2 :
first=insert(first);
printf ("\nLIST
: \n");
display(first);
continue;
case 3 :
first=delet(first);
continue;
case
4 :
display(first);
continue;
default :
printf
("\nEnd of computation\n");
}
}while (choice!=5);
}
int menu()
{
int choice;
do
{
printf ("\nMain Menu ");
printf ("\n1 - Create the linked
list");
printf ("\n2 - Insert an item");
printf ("\n3 - Delete an item");
printf ("\n4 - Display list");
printf ("\n5 - Exit");
printf ("\nEnter choice : ");
scanf ("%d",&choice);
}while (choice<1||choice>5);
printf ("\n");
return (choice);
}
node *create(node *first)
{
int no,i;
node *temp, *prev;
prev=first=NULL;
printf ("Enter number of data item(s) : ");
scanf ("%d",&no);
for (i=0;i<no;i++)
{
temp=(node *)malloc(sizeof(node));
printf ("\nEnter name : ");
scanf (" %[^\n]s",temp->name);
printf ("Enter enrolment number :
");
scanf ("%d",&temp->empno);
printf ("Enter age : ");
scanf ("%d",&temp->age);
printf ("Enter sex : ");
scanf (" %c",&temp->sex);
temp->next=NULL;
if (first==NULL)
first=temp;
else
prev->next=temp;
prev=temp;
}
temp->next=NULL;
return(first);
}
void display(node *first)
{
if (first!=NULL)
{
printf ("\nName : %s\nEnrolment No. :
%d",first->name,first->empno);
printf ("\nAge : %d\nSex :
%c\n---->\n",first->age,first->sex);
display(first->next);
}
return;
}
node *insert(node *first)
{
node *newnode;
node *temp;
int position;
int i;
newnode=(node *)malloc(sizeof(node));
printf ("\nEnter new item - name : ");
scanf (" %[^\n]s",newnode->name);
printf ("Enter enrolment number : ");
scanf ("%d",&newnode->empno);
printf ("Enter age : ");
scanf ("%d",&newnode->age);
printf ("Enter sex : ");
scanf (" %c",&newnode->sex);
do
{
printf ("Enter position of insertion :
");
scanf ("%d",&position);
}while (position<=0);
if ((position==1)||(first==NULL))
{
newnode->next=first;
first=newnode;
}
else
{
i=1;
temp=first;
while
((i<position-1)&&(temp->next!=NULL))
{
temp=temp->next;
i++;
}
newnode->next=temp->next;
temp->next=newnode;
}
return (first);
}
node *delet(node *first)
{
node *temp;
node *prev;
int target;
printf ("\nEnrolment number of data item to be
deleted : ");
scanf ("%d",&target);
if (first==NULL)
printf ("\nLIST EMPTY - CANNOT
DELETE");
else
{
prev=NULL;
temp=first;
while
((temp!=NULL)&&(temp->empno!=target))
{
prev=temp;
temp=temp->next;
}
if (temp==NULL)
printf ("\nElement not
found");
else
{
if (prev==NULL)
first=first->next;
else
prev->next=temp->next;
printf ("\nLIST : \n");
display(first);
}
}
return (first);
}
Output:
Main Menu
1 - Create the linked list
2 - Insert an item
3 - Delete an item
4 - Display list
5 - Exit
Enter choice : 1
Enter number of data item(s)
: 10
Enter name : Ramu
Enter enrolment number : 100
Enter age : 19
Enter sex : M
Enter name : Senthil
Enter enrolment number : 200
Enter age : 20
Enter sex : M
Enter name : Tarun
Enter enrolment number : 300
Enter age : 19
Enter sex : M
Enter name : Venkat
Enter enrolment number : 150
Enter age : 20
Enter sex : M
Enter name : Preeti
Enter enrolment number : 250
Enter age : 19
Enter sex : F
Enter name : Pawan
Enter enrolment number : 350
Enter age : 19
Enter sex : M
Enter name : Shakthi
Enter enrolment number : 620
Enter age : 19
Enter sex : M
Enter name : Abhiram
Enter enrolment number : 614
Enter age : 19
Enter sex : M
Enter name : John
Enter enrolment number : 234
Enter age : 19
Enter sex : M
Enter name : Roja
Enter enrolment number : 45
Enter age : 19
Enter sex : F
Created LIST :
Name : Ramu
Enrolment No. : 100
Age : 19
Sex : M
---->
Name : Senthil
Enrolment No. : 200
Age : 20
Sex : M
---->
Name : Tarun
Enrolment No. : 300
Age : 19
Sex : M
---->
Name : Venkat
Enrolment No. : 150
Age : 20
Sex : M
---->
Name : Preeti
Enrolment No. : 250
Age : 19
Sex : F
---->
Name : Pawan
Enrolment No. : 350
Age : 19
Sex : M
---->
Name : Shakthi
Enrolment No. : 620
Age : 19
Sex : M
---->
Name : Abhiram
Enrolment No. : 614
Age : 19
Sex : M
---->
Name : John
Enrolment No. : 234
Age : 19
Sex : M
---->
Name : Roja
Enrolment No. : 45
Age : 19
Sex : F
---->
Main Menu
1 - Create the linked list
2 - Insert an item
3 - Delete an item
4 - Display list
5 - Exit
Enter choice : 2
Enter new item - name :
Chandru
Enter enrolment number : 123
Enter age : 19
Enter sex : M
Enter position of insertion :
2
LIST :
Name : Ramu
Enrolment No. : 100
Age : 19
Sex : M
---->
Name : Chandru
Enrolment No. : 123
Age : 19
Sex : M
---->
Name : Senthil
Enrolment No. : 200
Age : 20
Sex : M
---->
Name : Tarun
Enrolment No. : 300
Age : 19
Sex : M
---->
Name : Venkat
Enrolment No. : 150
Age : 20
Sex : M
---->
Name : Preeti
Enrolment No. : 250
Age : 19
Sex : F
---->
Name : Pawan
Enrolment No. : 350
Age : 19
Sex : M
---->
Name : Shakthi
Enrolment No. : 620
Age : 19
Sex : M
---->
Name : Abhiram
Enrolment No. : 614
Age : 19
Sex : M
---->
Name : John
Enrolment No. : 234
Age : 19
Sex : M
---->
Name : Roja
Enrolment No. : 45
Age : 19
Sex : F
---->
Main Menu
1 - Create the linked list
2 - Insert an item
3 - Delete an item
4 - Display list
5 - Exit
Enter choice : 3
Enrolment number of data item
to be deleted : 45
LIST :
Name : Ramu
Enrolment No. : 100
Age : 19
Sex : M
---->
Name : Chandru
Enrolment No. : 123
Age : 19
Sex : M
---->
Name : Senthil
Enrolment No. : 200
Age : 20
Sex : M
---->
Name : Tarun
Enrolment No. : 300
Age : 19
Sex : M
---->
Name : Venkat
Enrolment No. : 150
Age : 20
Sex : M
---->
Name : Preeti
Enrolment No. : 250
Age : 19
Sex : F
---->
Name : Pawan
Enrolment No. : 350
Age : 19
Sex : M
---->
Name : Shakthi
Enrolment No. : 620
Age : 19
Sex : M
---->
Name : Abhiram
Enrolment No. : 614
Age : 19
Sex : M
---->
Name : John
Enrolment No. : 234
Age : 19
Sex : M
---->
Main Menu
1 - Create the linked list
2 - Insert an item
3 - Delete an item
4 - Display list
5 - Exit
Enter choice : 5
End of computation
// Sorting by Binary Search
method
# include <stdio.h>
# include <malloc.h>
# define SIZE 20
struct node
{
float val;
struct node *lptr, *rptr;
};
void disp(float a[SIZE], int
n)
{
int i;
printf ("%6.2f",a[0]);
for (i=1;i<n;i++)
printf (", %6.2f",a[i]);
printf("\n");
}
void preord(struct node
*strptr, float a[SIZE], int *i)
{
if (strptr!=NULL)
{
preord(strptr->lptr,a,i);
a[*i]=strptr->val;
(*i)++;
preord(strptr->rptr,a,i);
}
}
void binssort(float a[SIZE],
int n)
{
struct node *strptr, *savptr, *tempptr;
int i,f;
strptr=(struct node *)malloc(sizeof(struct node));
strptr->lptr=NULL;
strptr->rptr=NULL;
strptr->val=a[n/2];
for (i=n/2+1;i<=n-1;i++)
{
tempptr=strptr;
do
{
if (tempptr->val>a[i])
{
savptr=tempptr;
tempptr=tempptr->lptr;
f=1;
}
else
{
savptr=tempptr;
tempptr=tempptr->rptr;
f=2;
}
}while (tempptr!=NULL);
if (f==1)
{
savptr->lptr=(struct
node*)malloc(sizeof(struct node));
savptr=savptr->lptr;
}
else
{
savptr->rptr=(struct
node*)malloc(sizeof(struct node));
savptr=savptr->rptr;
}
savptr->lptr=NULL;
savptr->rptr=NULL;
savptr->val=a[i];
}
for (i=n/2-1;i>=0;i--)
{
tempptr=strptr;
do
{
if (tempptr->val>a[i])
{
savptr=tempptr;
tempptr=tempptr->lptr;
f=1;
}
else
{
savptr=tempptr;
tempptr=tempptr->rptr;
f=2;
}
}while (tempptr!=NULL);
if (f==1)
{
savptr->lptr=(struct node*)malloc(sizeof(struct
node));
savptr=savptr->lptr;
}
else
{
savptr->rptr=(struct
node*)malloc(sizeof(struct node));
savptr=savptr->rptr;
}
savptr->lptr=NULL;
savptr->rptr=NULL;
savptr->val=a[i];
}
i=0;
preord(strptr,a,&i);
}
void main ()
{
int i, n;
float a[SIZE];
printf ("\nProgram to sort the given vector:
");
printf ("\nMethod : Binary - Search Sort");
do
{
printf ("\nHow many elements : ");
scanf ("%i",&n);
fflush(stdin);
printf ("%i",n);
}while (n<2||n>SIZE);
printf ("\nEnter the elements : \n");
for (i=0;i<n;i++)
{
printf (" %i : ",i+1);
scanf ("%f",&a[i]);
fflush(stdin);
}
printf ("\nThe entered elements are : \n");
disp(a,n);
binssort(a,n);
printf ("\nThe sorted vector (in ascending order) :
\n");
disp(a,n);
}
Output:
Program to sort the given
vector:
Method : Binary - Search Sort
How many elements : 10
10
Enter the elements :
1 : 98
2 : 34
3 : 78
4 : 65
5 : 12
6 : 88
7 : 54
8 : 42
9 : 5
10 : 25
The entered elements are :
98.00, 34.00, 78.00,
65.00, 12.00, 88.00,
54.00, 42.00, 5.00,
25.00
The sorted vector (in
ascending order) :
5.00, 12.00, 25.00,
34.00, 42.00, 54.00,
65.00, 78.00, 88.00,
98.00
// Tree heap sort - non-key
value
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
typedef struct {
char name[20];
int no, age;
} record;
record stud[12];
void adjust (int i, int n,
int ch)
{
int j=2*i;
record item=stud[i];
switch (ch)
{
case 1 : while (j<=n)
{
if
((j<n)&&(stud[j].no<stud[j+1].no))
j=j+1;
if
(item.no>=stud[j].no)
break;
stud[j/2]=stud[j];
j=2*j;
}
stud[j/2]=item;
break;
case 2 : while
(j<=n)
{
if
((j<n)&&(strcmp(stud[j].name,stud[j+1].name)<0))
j=j+1;
if (strcmp(item.name,stud[j].name)>0)
break;
stud[j/2]=stud[j];
j=2*j;
}
stud[j/2]=item;
break;
case 3 : while
(j<=n)
{
if
((j<n)&&(stud[j].age<stud[j+1].age))
j=j+1;
if
(item.age>=stud[j].age)
break;
stud[j/2]=stud[j];
j=2*j;
}
stud[j/2]=item;
break;
}
}
void heapify (int n,int ch)
{
int i;
for (i=n/2;i>=1;i--)
adjust (i,n,ch);
}
void sort (int n, int ch)
{
int i;
record t;
heapify (n,ch);
for (i=n;i>=2;i--)
{
t=stud[i];
stud[i]=stud[1];
stud[1]=t;
adjust (1,i-1,ch);
}
}
int input ()
{
int no=0;
char ch;
do
{
++no;
printf ("Enter name : ");
scanf ("%s",stud[no].name);
printf ("Enter number : ");
scanf ("%d",&stud[no].no);
printf ("Enter age : ");
scanf ("%d",&stud[no].age);
printf ("Any more records (y/n) :
");
scanf (" %c",&ch);
fflush(stdin);
} while (ch!='n');
return no;
}
void display (int n)
{
int i;
for (i=1;i<=n;i++)
{
printf ("\nName : %s ",stud[i].name);
printf ("\n Age : %d ",stud[i].age);
printf ("\nNumber : %d
\n",stud[i].no);
}
}
void main ()
{
int no,ch;
printf ("\n Heap Sort \n");
no=input();
do
{
printf ("\n Sort according to : ");
printf ("\n 1 - Number ");
printf ("\n 2 - Name ");
printf ("\n 3 - Age ");
printf ("\n 4 - Exit");
printf ("\nEnter your choice : ");
scanf ("%d",&ch);
if (ch==4)
exit(0);
sort (no,ch);
display (no);
}while (ch!=4);
}
Output:
Heap Sort
Enter name : Ramu
Enter number : 100
Enter age : 18
Enter name : Shaan
Enter number : 200
Enter age : 19
Enter name : Tarun
Enter number : 300
Enter age : 20
Enter name : Venkat
Enter number : 400
Enter age : 19
Enter name : Zahid
Enter number : 500
Enter age : 19
Enter name : Shilpa
Enter number : 150
Enter age : 19
Enter name : Senthil
Enter number : 250
Enter age : 18
Enter name : Shakthi
Enter number : 350
Enter age : 19
Enter name : Parvathi
Enter number : 450
Enter age : 19
Enter name : Antony
Enter number : 420
Enter age : 19
Sort according to :
1 - Number
2 - Name
3 - Age
4 - Exit
Enter your choice : 1
Name : Ramu
Age : 18
Number : 100
Name : Shilpa
Age : 19
Number : 150
Name : Shaan
Age : 19
Number : 200
Name : Senthil
Age : 18
Number : 250
Name : Tarun
Age : 20
Number : 300
Name : Shakthi
Age : 19
Number : 350
Name : Venkat
Age : 19
Number : 400
Name : Antony
Age : 19
Number : 420
Name : Parvathi
Age : 19
Number : 450
Name : Zahid
Age : 19
Number : 500
Sort according to :
1 - Number
2 - Name
3 - Age
4 - Exit
Enter your choice : 2
Name : Antony
Age : 19
Number : 420
Name : Parvathi
Age : 19
Number : 450
Name : Ramu
Age : 18
Number : 100
Name : Senthil
Age : 18
Number : 250
Name : Shaan
Age : 19
Number : 200
Name : Shakthi
Age : 19
Number : 350
Name : Shilpa
Age : 19
Number : 150
Name : Tarun
Age : 20
Number : 300
Name : Venkat
Age : 19
Number : 400
Name : Zahid
Age : 19
Number : 500
Sort according to :
1 - Number
2 - Name
3 - Age
4 - Exit
Enter your choice : 3
Name : Ramu
Age : 18
Number : 100
Name : Senthil
Age : 18
Number : 250
Name : Shakthi
Age : 19
Number : 350
Name : Shaan
Age : 19
Number : 200
Name : Parvathi
Age : 19
Number : 450
Name : Shilpa
Age : 19
Number : 150
Name : Antony
Age : 19
Number : 420
Name : Venkat
Age : 19
Number : 400
Name : Zahid
Age : 19
Number : 500
Name : Tarun
Age : 20
Number : 300
Sort according to :
1 - Number
2 - Name
3 - Age
4 - Exit
Enter your choice : 4
//Reversing a linked list
& Sorting a linked list(Bubble sort)
# include <stdio.h>
# include <malloc.h>
typedef struct rec
{
int item;
struct rec *next;
} node;
void sort (node *first)
{
int temp;
node *list, *pass;
for (list=first;list->next!=NULL;list=list->next)
{
for
(pass=list->next;pass!=NULL;pass=pass->next)
{
if
(list->item>pass->item)
{
temp=list->item;
list->item=pass->item;
pass->item=temp;
}
}
}
}
node *create (node *first)
{
int i,no;
node *temp, *prev;
temp=prev=NULL;
printf ("\nEnter the no. of elements : ");
scanf ("%d",&no);
for (i=0;i<no;i++)
{
temp=(node *)malloc(sizeof(node));
printf ("\nEnter data : ");
scanf ("%d",&temp->item);
temp->next=NULL;
if (first==NULL)
first=temp;
else
prev->next=temp;
prev=temp;
}
prev->next=NULL;
return (first);
}
void display(node *record)
{
if (record)
{
printf (" %d",record->item);
display(record->next);
}
}
node *reverse (node *current)
{
node *prev=NULL, *save=NULL;
node *start;
while (current)
{
save=current->next;
current->next=prev;
prev=current;
current=save;
}
start=prev;
return (start);
}
void main ()
{
node *start=NULL;
printf ("\nSorting and reversing a linked
list");
start=create(start);
printf ("\n\nList before reversal : \n");
display(start);
start=reverse(start);
printf ("\n\nList after reversal : \n");
display(start);
sort (start);
printf ("\n\nList after sorting : \n");
display(start);
}
Output:
Sorting and reversing a
linked list
Enter the no. of elements :
10
Enter data : 1
Enter data : 3
Enter data : 5
Enter data : 7
Enter data : 9
Enter data : 0
Enter data : 2
Enter data : 4
Enter data : 6
Enter data : 8
List before reversal :
1 3 5 7 9 0 2 4 6 8
List after reversal :
8 6 4 2 0 9 7 5 3 1
List after sorting :
0 1 2 3 4 5 6 7 8 9