#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
struct node *top=NULL,*c,*p;
push()
{
int val;
printf("\nenter a value to insert into stack\n");
scanf("%d",&val);
struct node * newnode=malloc(sizeof(struct node));
newnode->data=val;
newnode->next = NULL;
if(top == NULL)
top = newnode;
else
{
newnode->next=top;
top=newnode;
}
}
pop()
{
if(top == NULL)
{
printf("\n Stack is EMPTY..Deletion is not possible");
return;
}
printf("\n Deleted element = %d\n",top->data);
c=top;
top=top->next;
free(c);
}
display()
{
if(top == NULL)
{
printf("stack is empty");
return;
}
else
{
for(c=top;c!=NULL;c=c->next)
printf("%d\t",c->data);
}
}
main()
{
int opt;
while(1)
{
printf("\nPress 1. Push\t 2. Pop\t3. Display \t4. Exit \n");
scanf("%d",&opt);
switch(opt)
{
case 1: push();
break;
case 2: pop();
break;
case 3: display();
break;
case 4: exit(0);
}
}
}
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
struct node *top=NULL,*c,*p;
push()
{
int val;
printf("\nenter a value to insert into stack\n");
scanf("%d",&val);
struct node * newnode=malloc(sizeof(struct node));
newnode->data=val;
newnode->next = NULL;
if(top == NULL)
top = newnode;
else
{
newnode->next=top;
top=newnode;
}
}
pop()
{
if(top == NULL)
{
printf("\n Stack is EMPTY..Deletion is not possible");
return;
}
printf("\n Deleted element = %d\n",top->data);
c=top;
top=top->next;
free(c);
}
display()
{
if(top == NULL)
{
printf("stack is empty");
return;
}
else
{
for(c=top;c!=NULL;c=c->next)
printf("%d\t",c->data);
}
}
main()
{
int opt;
while(1)
{
printf("\nPress 1. Push\t 2. Pop\t3. Display \t4. Exit \n");
scanf("%d",&opt);
switch(opt)
{
case 1: push();
break;
case 2: pop();
break;
case 3: display();
break;
case 4: exit(0);
}
}
}
good and efficient solution, thanks man
ReplyDeleteRefer below link for code in c++, python and java
http://code2begin.blogspot.com/2016/11/stack-implementation-using-array.html