Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

12cse79

PROGRAM:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
struct symtable
{
int address;
char label[10];
int flag;
}a[11];
int hashvalue,addr,i,ch;
char lbl[10];
void display()
{
printf("\nThe Symbol table is:\n");
printf("\nHash Values\tAddress\tLabel\n");
for(i=0;i<11;i++)
{
printf("\n\n%d %d %s",i,a[i].address,a[i].label);
}
}
void create()
{
char opt[10];

12cse79

do
{
printf("\nEnter the address:");
scanf("%d",&addr);
hashvalue=addr%11;
printf("\nEnter the label:");
scanf("%s",lbl);
if(a[hashvalue].address==addr)
{
strcpy(a[hashvalue].label,lbl);
a[hashvalue].flag=1;
}
else
{
int allocated=0;
for(hashvalue++;hashvalue<11;hashvalue++)
{
if(a[hashvalue].flag==0)
{
a[hashvalue].address=addr;
strcpy(a[hashvalue].label,lbl);
a[hashvalue].flag=1;
allocated=1;
break;
}

12cse79

}
if(allocated==0)
{
for(hashvalue=0;hashvalue<11;hashvalue++)
{
if(a[hashvalue].flag==0)
{
a[hashvalue].address=addr;
strcpy(a[hashvalue].label,lbl);
a[hashvalue].flag=1;
break;
}
}
}
}
printf("\nContinue(y/n)");
scanf("%s",opt);
}
while(strcmp(opt,"n")!=0);
display();
}
void search()
{
printf("\nEnter the label");
scanf("%s",lbl);

12cse79

for(i=0;i<11;i++)
{
if(a[i].flag==1)
{
if(strcmp(a[i].label,lbl)==0)
{
printf("\nThe Label %s found at address %d",lbl,a[i].address);
}
}
}
}
void main()
{
clrscr();
for(i=0;i<10;i++)
{
a[i].flag=0;
a[i].address=0;
strcpy(a[i].label," ");
}
while(1)
{
ph:
printf("\n\n1.Create a Symbol Table\n2.Search in Symbol Table\n3.Exit");
printf("\n\nEnter your choice:");

12cse79

scanf("%d",&ch);
switch(ch)
{
case 1:
create();
break;
case 2:
search();
break;
case 3:
exit(0);
break;
default:
printf("\nEnter a valid option:");
goto ph;
}
}
}

12cse79

OUTPUT:
1.Create a Symbol Table
2.Search in Symbol Table
3.Exit
Enter your choice:1
Enter the address:1000
Enter the label:alpha
Continue(y/n)y
Enter the address:1002
Enter the label:beeta
Continue(y/n)y
Enter the address:1003
Enter the label:gamma
Continue(y/n)
1 1000 alpha
2 1002 beeta
3 1003 gamma
4 1002 beeta
5 1003 gamma
60
70
80
90
10 0
1.Create a Symbol Table

12cse79

2.Search in Symbol Table


3.Exit
Enter your choice:2
Enter the labelgamma
The Label gamma found at address 1003
1.Create a Symbol Table
2.Search in Symbol Table
3.Exit
Enter your choice:3

RESULT:

You might also like