Sunday, February 27, 2011

STAKLINK

/*  Write a Program to perform the following operation stack using linklist. */
/* PUSH, POP, ISEMPTY, ISFULL, PEEP */
struct list
{
int info;
struct list *next;
}*start,*q,*node,*p;
#define max 4
void push();
void pop();
int isempty();
int isfull();
void peep();
void disp();
int top=-1,stack[max];
void main()
{

int ret,s1,choice;
clrscr();

start = '\0';

do
{
printf("\n\n1 : Push element in Stack.\n");
printf("2 : Pop an element from stack.\n");
printf("3 : Peep an element into stack.\n");
printf("4 : Exit from Program.\n");
printf("Enter your choice : ");
scanf("%d",&choice);

switch(choice)
{
case 1:
ret = isfull();
if(ret!=1)
push();
disp();
break;
case 2:
ret = isempty();
if(ret != 1)
pop();
disp();
break;
case 3:
ret = isempty();
if(ret != 1)
peep();
disp();
break;
case 4:
exit();
default :
printf("\n\n\t\t######## INVALID CHOICE ##########\n\n");
}

}while(s1);

}



int isfull()
{
if(top == max)
{
printf("\n\n\t\t####### STCK IS OVERFLOW #########\n\n");
return 1;
}
else
return 0;
}


int isempty()
{
if(top == -1)
{
printf("\n\n\t\t####### STCK IS UNDERFLOW #########\n\n");
return 1;
}
else
return 0;
}

void push()
{
int item;
printf("\nEnter an Integer value : ");
scanf("%d",&item);
top = top + 1;

node = (struct list *)malloc(sizeof(struct list));
node->info = item;
node->next = '\0';
p = start;

if (start == '\0')
start = node;
else
{
while(p->next != '\0')
p = p->next;
p->next = node;
}

}

void pop()
{
int item;
q = start;
p = start->next;
while(p->next!='\0')
{
p = p->next;
q = q->next;
}
item = p->info;

if(p==start)
start = '\0';

q->next='\0';
top = top -1;
printf("\n\n\t\t%d is deleted\n",item);
}


void peep()
{
int item,q;
printf("\n\nEnter position : ");
scanf("%d",&q);
p = start;

while(q<=top)
{
p = p->next;
q++;
}

printf("\n\nYour selected Element is %d ",p->info);
}

void disp()
{

p = start;
printf("\n\nStack Contains : ");

while(p!='\0')
{
printf("%d ",p->info);
p = p->next;
}
}


0 comments:

Post a Comment