0% found this document useful (0 votes)
33 views9 pages

SPCC Exp 1

Hhggf

Uploaded by

betkarritesh806
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views9 pages

SPCC Exp 1

Hhggf

Uploaded by

betkarritesh806
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

# include <stdio.

h>

# include <conio.h>

# include <alloc.h>

# include <string.h>

# define null 0

int size=0;

void insert();

void del();

int search(char lab[]);

void modify();

void display();

struct symbtab{

char label[10];

int addr;

struct symtab *next;};

struct symbtab *first,*last;

void main(){

int op;

int y;

char la[10];

clrscr();

do{

printf("\nSYMBOL TABLE IMPLEMENTATION\n");

printf("1. INSERT\n");

printf("2. DISPLAY\n");

printf("3. DELETE\n");
printf("4. SEARCH\n");

printf("5. MODIFY\n");

printf("6. END\n");

printf("Enter your option : ");

scanf("%d",&op);

switch(op){

case 1:

insert();

display();

break;

case 2:

display();

break;

case 3:

del();

display();

break;

case 4:

printf("Enter the label to be searched : ");

scanf("%s",la);

y=search(la);

if(y==1){

printf("The label is already in the symbol Table");

else{

printf("The label is not found in the symbol table");

}
break;

case 5:

modify();

display();

break;

case 6:

break;

}}

while(op<6);

getch();}

void insert(){

int n;

char l[10];

printf("Enter the label : ");

scanf("%s",l);

n=search(l);

if(n==1){

printf("The label already exists. Duplicate cant be inserted\n");

else{

struct symbtab *p;

p=malloc(sizeof(struct symbtab));

strcpy(p->label,l);

printf("Enter the address : ");

scanf("%d",&p->addr);

p->next=null;

if(size==0){
first=p;

last=p;

else{

last->next=p;

last=p;

size++;

}}

void display(){

int i;

struct symbtab *p;

p=first;

printf("LABEL\tADDRESS\n");

for(i=0;i<size;i++)

{printf("%s\t%d\n",p->label,p->addr);

p=p->next;

}}

int search(char lab[]){

int i,flag=0;

struct symbtab *p;

p=first;

for(i=0;i<size;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("What do you want to modify?\n");

printf("1. Only the label\n");

printf("2. Only the address of a particular label\n");

printf("3. Both the label and address\n");

printf("Enter your choice : ");

scanf("%d",&choice);

switch(choice){

case 1:

printf("Enter the old label\n");

scanf("%s",l);

printf("Enter the new label\n");

scanf("%s",nl);

s=search(l);

if(s==0){

printf("NO such label");

else{

for(i=0;i<size;i++){

if(strcmp(p->label,l)==0){
strcpy(p->label,nl);

p=p->next;

}}

break;

case 2:

printf("Enter the label whose address is to modified\n");

scanf("%s",l);

printf("Enter the new address\n");

scanf("%d",&add);

s=search(l);

if(s==0){

printf("NO such label");

else{

for(i=0;i<size;i++){

if(strcmp(p->label,l)==0){

p->addr=add;

p=p->next;

}}

break;

case 3:

printf("Enter the old label : ");

scanf("%s",l);

printf("Enter the new label : ");

scanf("%s",nl);
printf("Enter the new address : ");

scanf("%d",&add);

s=search(l);

if(s==0){

printf("NO such label");

else{

for(i=0;i<size;i++){

if(strcmp(p->label,l)==0){

strcpy(p->label,nl);

p->addr=add;

p=p->next;

}}

break;

}}

void del(){

int a;

char l[10];

struct symbtab *p,*q;

p=first;

printf("Enter the label to be deleted\n");

scanf("%s",l);

a=search(l);

if(a==0){

printf("Label not found\n");

}
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--;

}}

You might also like