#include <stdio.h>
#include <stdlib.h>
#define false 0
#define true 1
#define maxsize 100
typedef int stackelementtype;
typedef struct
{
   stackelementtype elem[maxsize];
   int top;
}seqstack;
seqstack s1;
/*---------------------函数声明------------------------*/
void initstack(seqstack *s);
int emptystack(seqstack *s);
int fullstack(seqstack *s);
int pushstack(seqstack *s,stackelementtype x);
int popstack(seqstack *s,stackelementtype *x);
int gettopstack(seqstack *s,stackelementtype *x);
void displaymenu();
void outstack(seqstack *s);
/*-----------------------------------------------------*/
void initstack(seqstack *s)
{
 s->top=-1;
}
int emptystack(seqstack *s)
{
 return(s->top==-1?true:false);
}
int fullstack(seqstack *s)
{
 return(s->top==maxsize-1?true:false);
}
int pushstack(seqstack *s,stackelementtype x)
{
 if(s->top==maxsize-1)
 {
  return(false);
 }
 s->top++;
 s->elem[s->top]=x;
 return(true);
}
int popstack(seqstack *s,stackelementtype *x)
{
 if(s->top==-1)
 {
  return(false);
 }
 else
 {
 *x=s->elem[s->top];
 s->top--;
 return(true);
 }
}
int gettopstack(seqstack *s,stackelementtype *x)
{
 if(s->top==-1)
 {
  return(false);
 }
 else
 {
  *x=s->elem[s->top];
  return(true);
 }
}
void outstack(seqstack *s)
{
 int i;
 printf("\n栈为:\n");
 for(i=0;i<=s->top;i++)
 {
  printf("%d\t",s->elem[i]);
 }
 getch();
 displaymenu();
}
void displaymenu()
{
 int k;
 stackelementtype x;
 system("cls");
 do
 {
 printf("\t\t1.-------------初始化栈\n");
 printf("\t\t2.-------------压栈元素\n");
 printf("\t\t3.-------------出栈元素\n");
 printf("\t\t4.-------------取栈顶元素\n");
 printf("\t\t5.-------------打印栈元素\n");
 printf("\t\t6.-------------退出\n");
 printf("请输入您的选择:");
 scanf("%d",&k);
 switch(k)
 {
 case 1:
  system("cls");
  initstack(&s1);
  printf("初始化成功!");
  printf("\n按任意键返回主菜单...");
  getch();
  displaymenu();
  break;
 case 2:
  system("cls");
  printf("请输入您要压栈的元素:\t\t");
  scanf("%d",&x);
  if(pushstack(&s1,x))
  {
   printf("\n压栈成功!");
  }
  else
  {
  printf("\n压栈失败!");
  }
  printf("\n按任意键返回主菜单...");
  getch();
  displaymenu();
  break;
 case 3:
  system("cls");
  printf("按任意键出栈...\n");
  getch();
  popstack(&s1,&x);
  if(pushstack(&s1,x))
  {
   printf("\n出栈成功!");
   printf("\n出栈元素为:\t%d",x);
  }
  else
  {
  printf("\n出栈失败!");
  }
  outstack(&s1);
  printf("\n按任意键返回主菜单...");
  getch();
  displaymenu();
  break;
 case 4:
     system("cls");
  gettopstack(&s1,&x);
  outstack(&s1);
  getch();
     displaymenu();
  break;
 case 5:
  system("cls");
  outstack(&s1);
  getch();
  break;
 case 6:
  system("cls");
  printf("按任意键退出...");
  getch();
  exit(0);
 }
 }while(k>6||k<1);
}
void main()
{
 displaymenu();
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值