WRITE A PROGRAM TO PERFORM THE OPERATIONS OF SINGLY LINKED LIST

Programming Languages

/*WRITE A PROGRAM TO PERFORM THE OPERATIONS OF SINGLY LINKED LIST */
/ * INCLUDE HEADER FILES**/

#include<stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

/ * DECLARE SELF REFRENTIAL STRUCTURE/
struct node
{
char info[40];
struct node next;//POINTER WHICH POINTS TO THE NEXT NODE }head=NULL;
/
* DECLARATION OF THE FUNCTIONS THAT ARE USED IN THE PROGRAM/ void insertion(); void deletion(); void display(); void modify(); /MAIN FUNCTION STARTS HERE/ void main() { int choice,check; char ch; clrscr(); / * DO-WHILE LOOP STARTS HERE * / do { textcolor(YELLOW);//USING TEXT COLOUR FOR BETTER VIEW clrscr();//TO CLEAR THE SCREEN printf(“\n\n\t===============================================”); printf(“\n\n\t\t\tMENU”); printf(“\n\n\t===============================================”); printf(“\n\n\t1.INSERT THE STRING INTO THE LINKED LIST”); printf(“\n\n\t2.DELETE THE STRING FROM THE LINKED LIST”); printf(“\n\n\t3.MODIFY THE STRING IN THE LINKED LIST”); printf(“\n\n\t4.DISPLAY THE STRING IN THE LINKED LIST”); printf(“\n\n\t5.EXIT”); printf(“\n\n\t===============================================”); printf(“\n\n\t\tENTER YOUR CHOICE : “); check=scanf(“%d”,&choice); while(check!=1)//CHECK IS USED THAT IS ENTERED CHOICE IS INTEGER ONLY { printf(“ENTER ONLY INTEGERS VALUES FROM THE ABOVE CHOICES :”); fflush(stdin); check=scanf(“%d”,&choice); } / * SWITCH CASE STARTS HERE * /
switch(choice)
{
case 1:
insertion();//CALL INSERTION FUNCTION
break;
case 2:
deletion();//CALL DELETION FUNCTION
break;
case 3:
modify();//CALL MODIFY FUN~ TO MODIFY THE STRING
break;
case 4:
display();//CALL DISPLAY FUNCTION TO SEE THE ENTERED STRING
break;
case 5:
exit(0);//FOR EXIT FROM THE PROGRAM
break;
default:
printf(“\n\t\t===============================================”);
printf(“\n\t\tYOU ENTERED WRONG CHOICE, TRY AGAIN”);
printf(“\n\t\t===============================================”);
}
/* END OF SWITCH CASE * / fflush(stdin);//TO CLEAR THE BUFFER printf(“\n\t\tDO YOU WANTS TO EXIT PRESS ‘n’ ELSE PRESS ANY KEY :”); ch=getche(); }while(ch!=’n’); / * END OF DO-WHILE LOOP * / getch(); } / * DEFINITION PART OF INSERTION FUNCTION * /
void insertion()
{
int length,i=0;
struct node ptr,ptr1,loc,location;
ptr=(struct node)malloc(sizeof(struct node)); printf(“\n\n\t\tENTER THE STRING :”); fflush(stdin);//CLEAR THE BUFFER gets(ptr->info);//ENTER THE STRING length=strlen(ptr->info); //THESE STATEMENTS IS USED TO while(length>0) //CONVERT THE STRING INTO { //UPPER-CASE ptr->info[i]=toupper(ptr->info[i]); i++; length–; } if(head==NULL) // WHEN FIRST NODE INSERTED { ptr->next=NULL; head=ptr; } else if(head->next==NULL)//SECOND NODE INSERTED { / CONDITION IS CHECK AND PARTICULAR LOCATION IS FIND FOR STRING/ if(strcmp(head->info,ptr->info)<0) { ptr->next=NULL; head->next=ptr; } else if(strcmp(head->info,ptr->info)>0) { ptr->next=head; head=ptr; } else//THIS PART EXECUTE WHEN STRING IS NOT PRESENT { printf(“\n\n\t\tSTRING IS ALREADY PRESENT, TRY AGAIN”); getch(); main(); } } /* MORE THAN TWO STRING WE WANTS TO INSERTED *
/

else
{
    ptr1=head;

/ * WHILE LOOP STARTS HERE /
while(ptr1!=NULL)
{
/** CONDITIONS IS CHECKED AND FIND THE PARTICULAR LOCATION OF THE STRING * / if(strcmp(ptr1->info,ptr->info)<0) { loc=ptr1; ptr1=ptr1->next; continue; } else if(strcmp(ptr1->info,ptr->info)>0) { location=ptr1; break; } else//THIS STATEMENT EXECUTES WHEN STRING ALREADY PRESENT { printf(“\n\n\t\tSTRING IS ALREADY PRESENT, TRY AGAIN”); getch(); main();//CALL TO MAIN FUNCTION } ptr1=ptr1->next; } / * END OF WHILE LOOP * /
if(location==head)//IF LOCATION REFERS TO THE FIRST NODE
{
ptr->next=ptr1;
head=ptr;
}
else if(loc->next==location)//IF NEXT PART OF LOC IS LOCATION
{
ptr->next=loc->next;
loc->next=ptr;
ptr1=head;
}
else if(loc->next==NULL)
{
ptr->next=NULL;
loc->next=ptr;
}
}
printf(“\n\n\t\tSTRING HAS BEEN INSERTED IN THE LIST.,.,.,.,…\n\n”);
}
/ * DEFINITION PART OF DELETION FUNCTION * / void deletion() { int length,i=0,h=1; struct node ptr,ptr1,pointer,loc,temp; char str[40]; ptr1=head; pointer=head; if(head==NULL) { printf(“\n\n\t\tUNDERFLOW….”); } else { printf(“\n\n\tENTER THE STRING :”); fflush(stdin);//TO CLEAR THE BUFFER gets(str);//ENTER THE STRING THAT YOU WANTS TO DELETE length=strlen(str); while(length>0) //THESE STETEMENT IS USED TO { //CONVERT THE STRING ‘STR’INTO str[i]=toupper(str[i]); //UPPER-CASE i++; length–; } /WHILE LOOP STARTS HERE/
while(ptr1!=NULL)
{
/
* CONDITION IS CHECKED AND ‘LOC’ IS FIND WHOSE ITEM CAN BE DELETED * /
if(strcmp(ptr1->info,str)!=0)
{
loc=ptr1;
ptr1=ptr1->next;
pointer=pointer->next;
continue;
}
else if(strcmp(ptr1->info,str)==0)
{ h=0;
temp=ptr1;
break;
}
ptr1=ptr1->next;
}
/
* END OF WHILE LOOP * / if(h==0)//IF ELEMENT IS PRESENT THEN EXECUTE FOLLOWING IF BLOCK { if(temp==head) { head=head->next; ptr1=head; pointer=head; } else if(loc->next==temp) { loc->next=temp->next; } else if(ptr1==NULL) { ptr1=head; while(ptr1->next!=temp) { ptr1=ptr1->next; } ptr1->next=ptr1->next->next; } printf(“\n\n\t\tSTRING HAS DELETED FROM THE LIST\n\n”); } else//THIS ELSE PART EXECUTE WHEN ELEMENT DOES NOT PRESENT IN THE LIST { printf(“\n\t\tELEMENT DOES NOT EXIST\n\n”); } } } / * DEFINITION PART OF MODIFY FUNCTION * /
void modify()
{
int length,length2,i=0,j=0,t=1;
struct node ptr,ptr1,item,loc,location,element;
char str[40];
ptr1=head;
if(head==NULL)
{
printf(“\n\n\t\tTHERE IS NO STRING IN THE LIST\n\n”);
}
else
{
printf(“\n\t\tENTER THE STRING THAT YOU WANTS TO MODIFY :”);
fflush(stdin);//TO CLEAR THE BUFFER
gets(str);//ENTER THE STRING
length=strlen(str);
while(length>0) //THESE STATEMENT IS USED TO
{ //CONVERT THE STRING ‘STR’INTO
str[i]=toupper(str[i]); //UPPER-CASE
i++;
length–;
}
while(ptr1!=NULL)//WHILE LOOP BEGINS
{
if(strcmp(ptr1->info,str)!=0)
{
loc=ptr1;
ptr1=ptr1->next;
continue;
}
else if(strcmp(ptr1->info,str)==0)
{
t=0;
element=ptr1;
break;
}
ptr1=ptr1->next;
}//HERE END OF WHILE LOOP
if(t!=0)//IF STRING IS ALREADY PRESENT
{
printf(“\n\n\t\tSTRING IS ALREADY PRESENT,TRY AGAIN”);
getch();
main();
}
else
{
if(element==head)
{
head=head->next;
ptr1=head;
}
else if(loc->next==element)
{
loc->next=element->next;
}
else
{
ptr1=head;
while(ptr1->next!=element)
{
ptr1=ptr1->next;
}
ptr1->next=ptr1->next->next;
}
printf(“\n\n\t\tENTER THE NEW STRING :”);
fflush(stdin);//TO CLEAR THE BUFFER
gets(element->info);//ENTER A STRING INTO THE LOCATION WHERE STRING HAS BEEN DELETED
length2=strlen(element->info);
while(length2>0)
{
element->info[j]=toupper(element->info[j]);
j++;
length2–;
}
if(head==NULL)//IF HEAD POINTS TO NULL
{
element->next=NULL;
head=element;
ptr1=head;
}
else if(head->next==NULL)//CHECK THE CONDITION AND COMPARE
{ //THE FIRST STRING INTO ELEMENT INFO
if(strcmp(head->info,element->info)<0) { element->next=NULL;
head->next=element;
}
else if(strcmp(head->info,element->info)>0)
{
element->next=head;
head=element;
}
else
{
printf(“\n\n\t\tELEMENT IS ALREADY PRESENT,TRY AGAIN”);
getch();
main();//CALL TO MAIN FUNCTION
}
}
else
{
ptr1=head;
while(ptr1!=NULL)//WHILE LOOP BEGINS
{
if(strcmp(ptr1->info,element->info)<0) { loc=ptr1; ptr1=ptr1->next;
continue;
}
else if(strcmp(ptr1->info,element->info)>0)
{
location=ptr1;
break;
}
else
{
printf(“\n\n\t\tELEMENT IS ALREADY PRESENT,TRY AGAIN”);
getch();
main();
}
ptr1=ptr1->next;
}//END OF WHILE LOOP
if(location==head)//IF LOCATION POINTS TO HEAD
{
element->next=ptr1;
head=element;
}
else if(loc->next==location)//IF ‘LOC’ NEXT PART IS EQUALS
{ //TO THE LOCATION
element->next=loc->next;
loc->next=element;
ptr1=head;
}
else if(loc->next==NULL)//HERE LOC POINTS TO THE LAST NODE
{
element->next=NULL;
loc->next=element;
}
}
}
}
}
/**** DEFINITION PART OF DISPLAY FUNCTION **/
void display()
{
struct node ptr,ptr1;
if(head==NULL)
{
printf(“\n\n\t\tTHERE IS NO ELEMENT IN THE LIST\n”);
}
else
{
ptr=head;
/** HERE WHILE LOOP BEGINS THAT DISPLAYS THE STRINGS PRESENT IN THE LIST*/ while(ptr!=NULL) { printf(“\n\t\t”); puts(ptr->info); ptr=ptr->next; } } }

/ * END OF THE PROGRAM * /

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.