TOJ 数据结构实验--静态顺序栈
描述
创建一个顺序栈(静态),栈大小为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 ;
}
TOJ 数据结构实验--静态顺序栈的更多相关文章
- TZOJ 数据结构实验--静态顺序栈
描述 创建一个顺序栈(静态),栈大小为5.能够完成栈的初始化.入栈.出栈.获取栈顶元素.销毁栈等操作. 顺序栈类型定义如下: typedef struct { int data[Max]; i ...
- 数据结构:C_顺序栈的实现
数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表. ..... 2.代码分解 2.1对栈的结构定义: typede ...
- 数据结构——Java实现顺序栈
一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 顺序栈是指利用顺序存储结构实现 ...
- 数据结构实验3:C++实现顺序栈类与链栈类
实验3 3.1 实验目的 熟练掌握栈的顺序存储结构和链式存储结构. 熟练掌握栈的有关算法设计,并在顺序栈和链栈上实现. 根据具体给定的需求,合理设计并实现相关结构和算法.3.2实验要求3.2.1 ...
- 数据结构实验1:C++实现静态顺序表类
写了3个多小时,还是太慢了.太菜了! 图1 程序运行演示截图1 实验1 1.1 实验目的 熟练掌握线性表的顺序存储结构. 熟练掌握顺序表的有关算法设计. 根据具体问题的需要,设计出合理的表示数据的顺序 ...
- SDUT-1479_数据结构实验之栈与队列九:行编辑器
数据结构实验之栈与队列九:行编辑器 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一个简单的行编辑程序的功能是:接受用 ...
- SDUT-3334_数据结构实验之栈与队列七:出栈序列判定
数据结构实验之栈与队列七:出栈序列判定 Time Limit: 30 ms Memory Limit: 1000 KiB Problem Description 给一个初始的入栈序列,其次序即为元素的 ...
- SDUT-3332&3333_数据结构实验之栈与队列五:下一较大值
数据结构实验之栈与队列六:下一较大值 Time Limit: 150 ms Memory Limit: 8000 KiB Problem Description 对于包含n(1<=n<=1 ...
- 数据结构Java实现05----栈:顺序栈和链式堆栈
一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...
随机推荐
- typedef 使用
1,C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字. #include<stdio.h> typedef unsigned char BYTE; int mai ...
- GIT入门笔记(10)- 多种撤销修改场景和对策
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file. 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步, ...
- python入门(2)python的安装
python入门(2)python的安装 Python是跨平台的,可以运行在Windows.Mac和各种Linux/Unix系统上. 2.x还是3.x Python有两个版本,一个是2.x版,一个是3 ...
- vmvare入门(1)使用移动,不要使用复制
1.复制虚拟机会产生新的自动网卡,原来的 System Eth0废了? 2.xftp链接的时候,要选择sftp方式连接,utf8编码.
- C++中explicit关键字
explicit: 防止隐式转换使用. 隐式转换:不同类型的变量可以互相转换,如将一个整形数值赋值给一个类,ClassXX lei = 4: C++中, 一个参数的构造函数(或者除了第一个参数外其余 ...
- 详解Ajax请求(四)——多个异步请求的执行顺序
首先提出一个问题:点击页面上一个按钮发送两个ajax请求,其中一个请求会不会等待另一个请求执行完毕之后再执行? 答案是:不会,这两个异步请求会同时发送,至于执行的快与慢,要看响应的数据量的大小及后台逻 ...
- java中数组、list、泛型集合的长度
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这 ...
- Centos6.9minimal安装图形化界面
有时我们会用到图形化界面来操作,下面介绍是在虚拟机上安装Centos6.9minimal版安装图形化界面(其他系统版本都类似吧,,,),如果是在物理机上安装进入的话要用的远程桌面工具VNC. VNC安 ...
- [洛谷P1198/BZOJ1012][JSOI2008] 最大数 - 树状数组/线段树?
其实已经学了树状数组和线段树,然而懒得做题,所以至今没写多少博客 Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数 ...
- hdu 6205 card card card
https://vjudge.net/contest/184514#problem/L题意:排成一行的一堆牌,每堆牌都有一定数量的牌,然后每堆牌对应有一个惩罚值.一开始所有的牌都是正面向下的,并且在游 ...