Dsa 6
Dsa 6
#include<string.h>
using namespace std;
typedef struct node
{
char k[20];
char m[20];
class node *lnode;
class node *rnode;
}
node;
class dictionary
{
public:
node *root;
void create();
void display(node *);
void addrecord(node *root,node *temp);
int search(node *,char []);
int update(node *,char []);
node *delnode(node *,char []);
node *min(node *);
};
void dictionary ::create()
{
class node *temp;
int ch;
do
{
temp= new node;
cout<<"\n Enter the Keyword: ";
cin>>temp->k;
cout<<"\nEnter Meaning of the Keyword : ";
cin>>temp->m;
temp->lnode=NULL;
temp->rnode =NULL;
if(root== NULL)
{
root=temp;
}
else
{
addrecord(root, temp);
}
cout<<"\nDo u want to add more record ? (y-1/n-0):";
cin>>ch;
}
while(ch==1 );
}
void dictionary :: addrecord(node *root,node *temp)
{
if(strcmp (temp->k, root->k) <0)
{
if(root->lnode==NULL)
root->lnode=temp;
else
addrecord(root->lnode,temp);
}
else
{
if(root->rnode== NULL)
root->rnode=temp;
else
addrecord(root->rnode,temp);
}
}
void dictionary:: display(node *root)
{
if( root != NULL)
{
display(root->lnode);
cout<<"\n Key Word:"<<root->k;
cout<<"\t Meaning :"<<root->m;
display(root->rnode);
}
}
int dictionary :: search(node *root,char k[20])
{
int c=0;
while(root != NULL)
{
c++;
if(strcmp(k,root->k)==0)
{
cout<<"\n No of Comparisons:"<<c;
return 1;
}
if(strcmp (k, root->k) <0)
root=root->lnode;
if(strcmp (k, root->k) >0)
root=root->rnode;
}
return -1;
}
int dictionary :: update(node *root,char k[20])
{
while(root !=NULL)
{