Sunday, April 19, 2009

ds-program

//*program of a circular queue *//


#include
#include
#include
#include
struct Product
{
char Name[20];
char Color[20];
int Price;
struct Product *Next;
};
void Push(struct Product *Node);
void Pop(struct Product *Node);
void Peep(struct Product *Node);
void main()
{
struct Product Start;
Start.Next=NULL;
int choice;
clrscr();
while(1)
{
printf("\n [1] Push");
printf("\n [2] Pop");
printf("\n [3] Peep");
printf("\n [4] Exit");
printf("\n What Op. U want to Do : ");
scanf("%d",&choice);
switch(choice)
{
case 1: Push(&Start);
break;
case 2: Pop(&Start);
break;
case 3: Peep(&Start);
break;
case 4: exit(0);
}
getch();
clrscr();
}

}
void Push(struct Product *Node)
{
struct Product *Newnode,*First;


Newnode=(struct Product*)malloc(sizeof(struct Product));
printf("\n Product Name : ");
scanf("%s",&Newnode->Name);
printf("\n Product Color : ");
scanf("%s",&Newnode->Color);
printf("\n Product Price : ");
scanf("%d",&Newnode->Price);
if(Node->Next==NULL)
{
Node->Next=Newnode;
Newnode->Next=Newnode;
}
else
{
First=Node->Next;
Node=Node->Next;
while(Node->Next!=First)
Node=Node->Next;

Node->Next=Newnode;
Newnode->Next=First;
}
}
void Pop(struct Product *Node)
{
struct Product *First,*Second,*Start;
First=Node->Next;
if(Node->Next==NULL)
{
printf("\n Stack is UNDER-FLOW");
return;
}
else
if(First->Next==First)
{
Node->Next=NULL;
printf("\n PRODUCT LIST");
printf("\n-----------------------------------");
printf("\n %-12s %-12s %6s","NAME","COLOR","PRICE");
printf("\n-----------------------------------");
printf("\n %-12s %-12s %6d",First->Name,First->Color,First->Price);
printf("\n-----------------------------------");
free(First);

}
else
{
Start=Node;
First=Node->Next;
Second=First->Next;

Node=Node->Next;
while(Node->Next!=First)
{
Node=Node->Next;
}

Start->Next=Second;
Node->Next=Second;

printf("\n PRODUCT LIST");
printf("\n-----------------------------------");
printf("\n %-12s %-12s %6s","NAME","COLOR","PRICE");
printf("\n-----------------------------------");
printf("\n %-12s %-12s %6d",First->Name,First->Color,First->Price);
printf("\n-----------------------------------");
free(First);
}
}
void Peep(struct Product *Node)
{
if(Node->Next==NULL)
{
printf("\n Stack is UNDER-FLOW");
return;
}

printf("\n PRODUCT LIST");
printf("\n-----------------------------------");
printf("\n %-12s %-12s %6s","NAME","COLOR","PRICE");
printf("\n-----------------------------------");
while(1)
{
Node=Node->Next;
printf("\n %-12s %-12s %6d",Node->Name,Node->Color,Node->Price);
if(getch()==32)
break;

}
printf("\n-----------------------------------");
}

No comments:

Post a Comment