Question: remove everything that mentions label (even la) from this code, keep symbol and change it to char * symbol, make sure it compiles thank u
remove everything that mentions label (even la) from this code, keep symbol and change it to char * symbol, make sure it compiles thank u
#include
#include
#include
#include
#include
#define NULL 0
int size=0;
void Insert();
void Display();
void Delete();
int Search(char lab[]);void Modify();
struct SymbTab
{
char label[10],symbol[10];
int addr;
struct SymbTab *next;};
struct SymbTab *first,*last;
void main()
{
int op,y;
char la[10];
clrscr();
do
{
printf( \tSYMBOL TABLE IMPLEMENTATION );
printf( \t1.INSERT \t2.DISPLAY \t3.DELETE \t4.SEARCH \t5.MODIFY \t6.END );
printf( \tEnter your option : );
scanf(%d,&op);
switch(op)
{
case 1:
Insert();
break;
case 2:
Display();
break;
case 3:
Delete();
break;
case 4:
printf( \tEnter the label to be searched : );
scanf(%s,la);
y=Search(la);
printf( \tSearch Result:);
if(y==1)
printf( \tThe label is present in the symbol table );
else
printf( \tThe label is not present in the symbol table );
break;
case 5:
Modify();
break;
case 6:
exit(0);
}
}while(op<6);
getch();
}
void Insert()
{
int n;
char l[10];
printf( \tEnter the label : );
scanf(%s,l);
n=Search(l);
if(n==1)
printf( \tThe label exists already in the symbol table \tDuplicate cant be inserted);
else
{
struct SymbTab *p;
p=malloc(sizeof(struct SymbTab));
strcpy(p->label,l);
printf( \tEnter the symbol : );
scanf(%s,p->symbol);
printf( \tEnter the address : );
scanf(%d,&p->addr);
p->next=NULL;
if(size==0)
{
first=p;
last=p;
}
else
{
last->next=p;
last=p;
}
size++;
}
printf( \tLabel inserted );
}
void Display()
{
int i;
struct SymbTab *p;
p=first;
printf( \tLABEL\t\tSYMBOL\t\tADDRESS );
for(i=0;i { printf(\t%s\t\t%s\t\t%d ,p->label,p->symbol,p->addr); p=p->next; } } int Search(char lab[]) { int i,flag=0; struct SymbTab *p; p=first; for(i=0;i { if(strcmp(p->label,lab)==0) flag=1; p=p->next; } return flag; } void Modify() { char l[10],nl[10]; int add,choice,i,s; struct SymbTab *p; p=first; printf( \tWhat do you want to modify? ); printf( \t1.Only the label \t2.Only the address \t3.Both the label and address ); printf(\tEnter your choice : ); scanf(%d,&choice); switch(choice) { case 1: printf( \tEnter the old label : ); scanf(%s,l); s=Search(l); if(s==0) printf( \tLabel not found ); else { printf( \tEnter the new label : ); scanf(%s,nl); for(i=0;i { if(strcmp(p->label,l)==0) strcpy(p->label,nl); p=p->next; } printf( \tAfter Modification: ); Display(); } break; case 2: printf( \tEnter the label where the address is to be modified : ); scanf(%s,l); s=Search(l); if(s==0) printf( \tLabel not found ); else { printf( \tEnter the new address : ); scanf(%d,&add); for(i=0;i { if(strcmp(p->label,l)==0) p->addr=add; p=p->next; } printf( \tAfter Modification: ); Display(); } break; case 3: printf( \tEnter the old label : ); scanf(%s,l); s=Search(l); if(s==0) printf( \tLabel not found ); else { printf( \tEnter the new label : ); scanf(%s,nl); printf( \tEnter the new address : ); scanf(%d,&add); for(i=0;i { if(strcmp(p->label,l)==0) { strcpy(p->label,nl); p->addr=add; } p=p->next; } printf( \tAfter Modification: ); Display(); } break; } } void Delete() { int a; char l[10]; struct SymbTab *p,*q; p=first; printf( \tEnter the label to be deleted : ); scanf(%s,l); a=Search(l); if(a==0) printf( \tLabel not found ); else { if(strcmp(first->label,l)==0) first=first->next; else if(strcmp(last->label,l)==0) { q=p->next; while(strcmp(q->label,l)!=0) { p=p->next; q=q->next; } p->next=NULL; last=p; } else { q=p->next; while(strcmp(q->label,l)!=0) { p=p->next; q=q->next; } p->next=q->next; } size; printf( \tAfter Deletion: ); Display(); } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
