⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gstack.c

📁 generalised stack using array
💻 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 + -