#include< stdio.h >
#include< stdlib.h >
#include
struct list
{
char AcNameS[20];
struct list *next;
};
typedef struct list node;
node* APushS(node* AStackS,char *AcNameS);
node* APopS(node *ATopS);
node* AQInsertS(node * ARearS,char AcNameS[]);
node* AQDeleteS(node* AFrontS);
node* ACInsertS(node *AFrontS);
node *ACQDeleteS(node *AFrontS,node *ARearS);
int main()
{
int AiChoiceS;
do
{ printf("\nMenu\n 1: Stack implementation\n 2: Queue implementation\n 3: Circular queue implementatiion \n 4: Exit\nEnter your choice : ");
scanf("%d",&AiChoiceS);
switch(AiChoiceS)
{
case 1: AStackS();break;
case 2: AQueueS();break;
case 3: ACirQueue();break;
case 4: break;
default:printf("\nInvalid entry\n");
}
}while(AiChoiceS!=4);
}
int AStackS() // FUNCTION TO IMPLEMENT STACK USING LINKED LIST
{
int AiChS;
char AcNameS[20];
node *ATopS=NULL,*AStackS=NULL;
do
{
printf("\nStack Menu\n 1: Push\n 2: Pop\n 3: exit\n Enter your choice : ");
scanf("%d",&AiChS);
switch(AiChS)
{
case 1: printf("\nEnter the name you want to push : ");scanf("%s",AcNameS);ATopS=APushS(ATopS,AcNameS);Print(ATopS);break;
case 2: ATopS=APopS(ATopS);Print(ATopS);break;
case 3: printf("\nYou are exited from Stack menu\n");break;
default:printf("\nInvalid entry\n");
}
}while(AiChS!=3);
}
node* APushS(node* AStackS,char AcNameS[]) // FUNCTION TO IMPLEMENT PUSH OPERATION
{
node *ATmpS=NULL;
ATmpS=(node*)malloc(sizeof(node));
strcpy(ATmpS->AcNameS,AcNameS);
ATmpS->next=AStackS;
return ATmpS;
}
node* APopS(node *ATopS) // FUNCTION TO IMPLEMENT POP OPEARION
{
node *ATmpS=ATopS;
if(!ATopS)
{
printf("\nStack empty\n");
return NULL;
}
printf(" \nPop : %s \n",ATopS->AcNameS);
free(ATopS);
return ATmpS->next;
}
int Print(node * ATopS) // FUNCTION TO IMPLEMENT PRINT
{
(ATopS)?printf("\nNames are : "):printf("\nstack is empty\n");;
while(ATopS!=NULL)
{
printf(" %s ",ATopS->AcNameS);
ATopS=ATopS->next;
}
printf("\n");
}
int AQueueS() // FUNCTION TO IMPLEMENT QUEUE USING LINKED LIST
{
int AiChS;
char AcNameS[20];
node *AFrontS=NULL,*ARearS=NULL;
do
{
printf("\n Queue Menu \n 1: insert\n 2: Delete\n 3: Exit\nenter your choice :");
scanf("%d",&AiChS);
switch(AiChS)
{
case 1: printf("\nEnter name to insert : ");
scanf("%s",AcNameS);
if(!AFrontS) AFrontS=ARearS=AQInsertS(ARearS,AcNameS);
else {ARearS->next=AQInsertS(ARearS,AcNameS); ARearS=ARearS->next;}
Print(AFrontS);
break;
case 2: AFrontS=AQDeleteS(AFrontS);
Print(AFrontS);
break;
case 3: printf("\nYou are exited from Queue menu\n");break;
default:printf("\nInvalid entry\n");
}
}while(AiChS!=3);
}
node* AQInsertS(node* ARearS,char AcNameS[]) // FUNCTION TO IMPLEMENT INSERT AN ITEM IN TO A QUEUE
{
node *ATmpS;
ATmpS=(node*)malloc(sizeof(node));
strcpy(ATmpS->AcNameS,AcNameS);
ATmpS->next=NULL;
return ATmpS;
}
node* AQDeleteS(node* AFrontS) // FUNCTION TO IMPLEMENT DELETE AN ITEM FROM QUEUE
{
node *ATmpS;
ATmpS=AFrontS;
if(AFrontS)
{ printf("\nDeleted name : %s ",ATmpS->AcNameS);
free(AFrontS);
return ATmpS->next;
}
printf("\nQueue is empty\n");
return NULL;
}
int ACirQueue() // FUNCTION TO IMPLEMENT CIRCULAR QUEUE USING LINKED LIST
{
node *ACQueS,*AFrontS=NULL,*ARearS=NULL;
int AiChoiceS;
do
{
printf("\nMenu\n1:Insert\n2:Delete\n3: Exit\nEnter your choice : ");
scanf("%d",&AiChoiceS);
switch(AiChoiceS)
{
case 1: if(AFrontS==NULL) AFrontS=ARearS=ACInsertS(AFrontS);
else { ARearS->next=ACInsertS(AFrontS); ARearS=ARearS->next;}
break;
case 2: AFrontS=ACQDeleteS(AFrontS,ARearS);if(AFrontS==NULL) ARearS=NULL;
}
}while(AiChoiceS!=3);
}
node* ACInsertS(node *AFrontS) // FUNCTION TO INSERT AN ITEM IN TO A CIRCULAR QUEUE
{
node *ATempS=(node*)malloc(sizeof(node));
if(AFrontS==NULL) AFrontS=ATempS;
printf("\nEnter name to insert : ");
scanf("%s",ATempS->AcNameS);
ATempS->next=AFrontS;
return ATempS;
}
node *ACQDeleteS(node *AFrontS,node *ARearS) // FUNCTION TO DELETE AN ITEM FROM CIRCULAR QUEUE
{
node *ATempS=AFrontS;
if(AFrontS==NULL) {printf("\nCircular Queue is Empty\n");return NULL;}
if(AFrontS==ARearS) return NULL;
ARearS->next=ATempS->next;
printf("\nDeleted name is : %s\n",ATempS->AcNameS);
free(AFrontS);
return ATempS->next;
}
int PrintC(node *l) // FUNCTION TO PRINT A LIST
{ node* f=l;
if(f==NULL){printf("\nCircular Queue is Empty\n");exit(1);}
do
{
printf("%s ",l->AcNameS);
l=l->next;
}while(l!=f);
}
No comments:
Post a Comment