📄 gstack.c
字号:
//generalised stack.
#include<stdio.h>
int n;
struct element
{
int type;
union u
{
int a;
char b;
float c;
}eletype;
}ele;
typedef struct
{
int top;
struct element ele[10];
}stack;
stack s;
int fullstack(stack *);
void push(stack *);
void pop(stack *);
int emptystack(stack *);
void main()
{
int num,ch;
char c;
clrscr();
s.top=-1;
printf("ENTER THE CAPACITY OF THE STACK\n");
scanf("%d",&n);
do
{
printf("------------OPERATIONS ON THE STACK----------\n");
printf("1-----PUSH\n");
printf("2-----POP\n");
printf("3-----PEEP\n");
printf("4-----EXIT\n");
printf("WHICH OPERATION WOULD U LYK TO PRFORM ON STACK ?\n");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("*****PUSH AN ELEMENT IN THE STACK*****\n");
if(fullstack(&s))
printf("THE STACK IS FULL....\n");
else
push(&s);
break;
case 2:
printf("*****POP AN ELEMENT*****\n");
if(emptystack(&s))
printf("STACK IS EMPTY\n");
else
pop(&s);
break;
case 3:
printf("*****PEEP AN ELEMENT IN THE STACK*****\n");
if(emptystack(&s))
printf("THE STACK IS EMPTY\n");
else
{
pop(&s);
push(&s);
}
break;
case 4:
exit();
}
printf("DO YOU WANT TO CONTINUE?\n...ENTER y(for yes) or n(for no)\n");
fflush(stdin);
scanf("%c",&c);
}while(c=='y');
}
int fullstack(stack *s)
{
if(s->top==n-1)
return(1);
else
return(0);
}
void push(stack *s)
{
printf("ENTER TYPE OF THE ELEMENT\n1-----INT\n2-----CHAR\n3-----FLOAT\n");
scanf("%d",&s->ele[++(s->top)].type);
switch(s->ele[s->top].type)
{
case 1:
printf("ENTER THE ELEMENT\n");
scanf("%d",&s->ele[(s->top)].eletype.a);
break;
case 2:
printf("ENTER THE ELEMENT\n");
fflush(stdin);
scanf("%c",&s->ele[(s->top)].eletype.b);
break;
case 3:
printf("ENTER THE ELEMENT\n");
scanf("%f",&s->ele[(s->top)].eletype.c);
break;
}
}
void pop(stack* s)
{
int q;
q= s->ele[s->top].type;
printf("q= %d",q);
switch(q)
{
case 1:
printf("THE POPPED ELEMENT IS %d\n",s->ele[s->top--].eletype.a);
break;
case 2:
printf("THE POPPED ELEMENT IS %c\n",s->ele[s->top--].eletype.b);
break;
case 3:
printf("THE POPPED ELEMENT IS %f\n",s->ele[s->top--].eletype.c);
break;
}
}
int emptystack(stack *s)
{
if(s->top==-1)
return(1);
else
return(0);
}
void linkfloat()
{
float a,*b;
a=5;
b=&a;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -