YTU 3004: 栈的基本运算(栈和队列)
3004: 栈的基本运算(栈和队列)
时间限制: 1 Sec 内存限制: 128 MB
提交: 32 解决: 10
题目描述
编写一个程序,实现顺序栈的各种基本运算,主函数已给出,请补充每一种方法。
1、初始化栈s;
2、判断栈s是否非空;
3、进栈一个元素;
4、判读栈s是否非空;
5、输出栈长度;
6、输出从栈顶到栈元素;
7、输出出栈序列;
8、判断栈s是否非空;
9、释放栈;
数据元素类型定义为
typedef char ElemType;
顺序栈的定义为
输入
输入五个元素a,b,c,d,e;请根据题目编写算法。
输出
样例输入
abcde
样例输出
空
非空
栈的长度为5
edcba
edcba
非空
迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
#define SizeMax 105
typedef char ElemType;
typedef struct
{
ElemType data[SizeMax];
int top;
} SqStack;
void InitStack(SqStack *&s)
{
s=(SqStack*)malloc(sizeof(SqStack));
memset(s->data,0,sizeof(SqStack));
s->top=-1;
}
int StackEmpty(SqStack *s)
{
return s->top==-1;
}
void Push(SqStack *&s,ElemType x)
{
s->top++;
s->data[s->top]=x;
}
int Length(SqStack *s)
{
return s->top+1;
}
void PrintStack(SqStack *s)
{
for(int i=(int)strlen(s->data)-1; i>=0; i--)
printf("%c",s->data[i]);
printf("\n");
}
void Print(SqStack *s)
{
PrintStack(s);
}
void DestroyStack(SqStack *&s)
{
free(s);
}
int main()
{
SqStack *s;
InitStack(s); //初始化栈
if(StackEmpty(s))printf("空\n"); //判断栈是否为空
else printf("非空\n");
ElemType a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
Push(s,a); //入栈
Push(s,b);
Push(s,c);
Push(s,d);
Push(s,e);
if(StackEmpty(s))printf("空\n");
else printf("非空\n");
printf("栈的长度为%d\n",Length(s)); //输出栈的长度
PrintStack(s); //输出从栈顶到栈底的元素
Print(s); //输出出栈序列
if(StackEmpty(s))printf("空\n");
else printf("非空\n");
DestroyStack(s); //释放栈
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
#define SizeMax 105
typedef char ElemType;
typedef struct
{
ElemType data[SizeMax];
int top;
} SqStack;
void InitStack(SqStack *&s)
{
s=(SqStack*)malloc(sizeof(SqStack));
memset(s->data,0,sizeof(SqStack));
s->top=-1;
}
int StackEmpty(SqStack *s)
{
return s->top==-1;
}
void Push(SqStack *&s,ElemType x)
{
s->top++;
s->data[s->top]=x;
}
int Length(SqStack *s)
{
return s->top+1;
}
void PrintStack(SqStack *s)
{
for(int i=(int)strlen(s->data)-1; i>=0; i--)
printf("%c",s->data[i]);
printf("\n");
}
void Print(SqStack *s)
{
PrintStack(s);
}
void DestroyStack(SqStack *&s)
{
free(s);
}
int main()
{
SqStack *s;
InitStack(s); //初始化栈
if(StackEmpty(s))printf("空\n"); //判断栈是否为空
else printf("非空\n");
ElemType a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
Push(s,a); //入栈
Push(s,b);
Push(s,c);
Push(s,d);
Push(s,e);
if(StackEmpty(s))printf("空\n");
else printf("非空\n");
printf("栈的长度为%d\n",Length(s)); //输出栈的长度
PrintStack(s); //输出从栈顶到栈底的元素
Print(s); //输出出栈序列
if(StackEmpty(s))printf("空\n");
else printf("非空\n");
DestroyStack(s); //释放栈
return 0;
}
YTU 3004: 栈的基本运算(栈和队列)的更多相关文章
- YTU 3002: 出栈顺序(栈和队列)
3002: 出栈顺序(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 80 解决: 20 题目描述 给出一个入栈序列,和一个出栈序列,判断该出栈序列是否正确. 输入 输入包含 ...
- 算法(第四版)C# 习题题解——1.3.49 用 6 个栈实现一个 O(1) 队列
因为这个解法有点复杂,因此单独开一贴介绍. 那么这里就使用六个栈来解决这个问题. 这个算法来自于这篇论文. 原文里用的是 Pure Lisp,不过语法很简单,还是很容易看懂的. 先导知识——用两个栈模 ...
- 【12】python 栈型数据结构模拟、队列型数据结构模拟
一.压栈操作模拟 #__author:"吉*佳" #date: 2018/10/21 0021 #function:栈 # 栈:即是先进后出的一种数据结构 # (1)模拟压栈操作 ...
- C语言——链式存储实现栈的基本运算算法
Lkstack.h // 链栈的定义 typedef struct node { int data; struct node *next; }LkStk; main.c #include <st ...
- C语言——栈的基本运算在顺序栈上的实现
头文件 Seqstack.h #define maxsize 6 //const int maxsize = 6; // 顺序栈 typedef struct seqstack { int data[ ...
- 数据结构&算法(一)_堆、栈(堆栈)、队列、链表
堆: ①堆通常是一个可以被看做一棵树的数组对象.堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值: ·堆总是一棵完全二叉树.将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做 ...
- 栈(Stack)和队列(Queue)是两种操作受限的线性表。
(线性表:线性表是一种线性结构,它是一个含有n≥0个结点的有限序列,同一个线性表中的数据元素数据类型相同并且满足"一对一"的逻辑关系. "一对一"的逻辑关系指的 ...
- 栈(Stack)和队列
栈(Stack)和队列 栈是一个后进先出的线性表,它要求只在表尾进行删除和插入操作. 所谓的栈,其实就是一个特殊的线性表.表尾称为栈顶(Top),相应的表头称为栈底(Bottom). 栈的插入(Pus ...
- 02两栈共享空间_DoubleStack--(栈与队列)
#include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...
随机推荐
- 发现前端框架 bui-min.js
http://www.builive.com/apps/default/main.html#menu/code http://www.builive.com/demo/grid-plugin.php# ...
- Emmet 的使用
Emmet 的介绍 Emmet 的前身叫做:Zen Coding,也许熟知旧名的人不在少数.Emmet 一般前端工程师用得比较多,具体它是做什么的,我们通过下面两张 Gif 演示图来说明: Intel ...
- C++Primer 第十三章
//1.当定义一个类时,我们显示地或隐式地指出在此类型的对象(注意这里是此类型的对象,而不包括此类型的指针)拷贝,移动,赋值,销毁时做什么.一个类通过定义五种特殊的成员函数来控制这些操作:拷贝构造函数 ...
- Lintcode: Sort Colors II
Given an array of n objects with k different colors (numbered from 1 to k), sort them so that object ...
- C#:IO
1. File和Directory类 这两个类属于静态类,经常用到的比如File.Exists(string path), Directory.Exists(string path), Directo ...
- Listview和Gridview自定义分割线
1,ListView和GridView中的每一个条目都有分割线,属性android:footerDividersEnabled表示是否显示分割线,默认是为true,即可见.可以自定义的设置分割线的颜色 ...
- Win2008 IIS7日期时间格式更改最简便方法
windows2008 这么高级的系统不可能改个系统的日期时间显示格式还要进注册表啊.于是有baidu,google了下终于发现了,原来还有不需要注册表的更简便方法. windows2008默认时间格 ...
- EBS登陆链接网址
SELECT home_url FROM icx_parameters; SELECT profile_option_value FROM fnd_profile_option_values WHER ...
- const C语言(转)
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修饰局部变量.例:void fun ...
- 在Win8下无法打开 hlp 帮助文件的问题
需要安装Win8针对该问题的补丁程序,并且修改注册表,详细的解决方案: http://support.microsoft.com/kb/917607/zh-cn#fixit4me