描述

创建一个顺序栈(静态),栈大小为5。能够完成栈的初始化、入栈、出栈、获取栈顶元素、销毁栈等操作。

顺序栈类型定义如下:

typedef struct
 {  int data[Max];
    int top;
  }SqStack;

部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。

int main()
{
SqStack s;
char ss[10];
int x, sta;
InitStack(&s);
while(scanf("%s", ss)!=EOF)
{
if(strcmp(ss, "push")==0)
{
scanf("%d", &x);
sta=Push(&s, x);
if(sta==0)
printf("FULL\n");
}
else if(strcmp(ss, "top")==0)
{
sta= GetTop(s, &x);
if(sta==0)
printf("EMPTY\n");
else
printf("%d\n", x);
}
else
{
sta = Pop(&s, &x);
if(sta==0)
printf("EMPTY\n");
else
printf("%d\n", x);
}
}
return 0;
}

输入

输入数据由以下几种命令组成:

(1)push x:将x压入栈

(2)pop:出栈

(3)top:获取栈顶元素

每个命令占一行,以EOF结束。

输出

当执行push操作时元素入栈,若栈满,输出FULL。

当执行pop时输出出栈的元素,当栈为空时,需要输出EMPTY。

当执行top时输出栈顶元素。

样例输入

push
1
push
2
push
3
push
4
push
5
push
6
pop
top
pop
pop
pop
pop
pop

样例输出

FULL
5
4
4
3
2
1
EMPTY

#include<string.h>
#define Max 5
#include <stdio.h>
typedef struct
{ int data[Max];
int top;
}SqStack;
int StackEmpty(SqStack s)
{//判断栈空
if(s.top==-)
return ;
else return ;
}
void InitStack(SqStack *s)
{//初始化栈
s->top=-;//空栈
}
int Push(SqStack *s,int x)
{//进栈
if(s->top==Max-)//栈满
return ;
else {
s->top++;
s->data[s->top]=x;
return ;
}
}
int Pop(SqStack *s,int *x)
{//删除栈顶元素
if(StackEmpty(*s))
return ;
else{
*x=s->data[s->top];
s->top--;
return *x;
}
}
int GetTop(SqStack s,int *x)
{//获取栈顶元素
if(StackEmpty(s))
{
return ;
}
else{
*x=s.data[s.top];
return *x;
}
}
int main()
{
SqStack s;
char ss[];
int x, sta;
InitStack(&s);
while(scanf("%s", ss)!=EOF)
{
if(strcmp(ss, "push")==)
{
scanf("%d", &x);
sta=Push(&s, x);
if(sta==)
printf("FULL\n");
}
else if(strcmp(ss, "top")==)
{
sta= GetTop(s, &x);
if(sta==)
printf("EMPTY\n");
else
printf("%d\n", x);
}
else
{
sta = Pop(&s, &x);
if(sta==)
printf("EMPTY\n");
else
printf("%d\n", x);
}
}
return ;
}

最新文章

  1. Java学习笔记--循环总结
  2. Linux驱动程序学习【转】
  3. R语言XML包的数据抓取
  4. Linux SendMail发送邮件失败诊断案例(三)
  5. centos7 禁止防火墙
  6. Linux更改服务器Hostname
  7. Python迭代器:捕获Generator的返回值
  8. MapReduce 实现数据join操作
  9. android activity之间传递返回值
  10. hibernate - 何时关闭数据库
  11. Swift 表视图动画教程: Drop-In Cards
  12. 深入理解7816(2)---关于ATR
  13. C-JAVA 论坛
  14. GPU渲染管线概述
  15. JavaScript中的数值转换
  16. 将下载到本地的JAR包手动添加到Maven仓库
  17. 什么是spool系统,什么是预输入,什么是缓输出?
  18. Spark Streaming + Kafka整合(Kafka broker版本0.8.2.1+)
  19. Zookeeper与Kafka基础概念和原理
  20. Redis集群方案总结

热门文章

  1. Lottery
  2. Android 仿百度手机助手首页滑动效果
  3. java -&gt;IO流_序列化流与反序列化流
  4. 如何搭建一个WEB服务器项目(五)—— Controller返回JSON字符串
  5. 浅谈产品模型(Profile)在程序设计中的作用
  6. scrapy中间件之下载中间件使用(网易新闻爬取)
  7. flask之jinjia2模板语言
  8. drf 生命周期
  9. JQuery动态创建表单并提交
  10. jQuery中prevAll得到的DOM元素顺序问题