实现栈的push pop 操作,并可以输出栈的最小值

// SatckMin.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <stdlib.h> //malloc
#include <iostream>using namespace std;#define MAXSIZE 100
struct stack
{int data[MAXSIZE];int top;
};struct StackCopy
{int position[MAXSIZE];int top;
};typedef stack SeqStack;
typedef stack *pSeqStack;
typedef StackCopy SeqStackC;
typedef StackCopy *pSeqStackC;
int MinVal = 0;
int MinValPos = 0;
/*Init stack*/
pSeqStack InitStack()
{pSeqStack s;s = (pSeqStack) malloc(sizeof(SeqStack));s->top = -1;return s;
}
pSeqStackC InitStackC()
{pSeqStackC sC;sC = (pSeqStackC) malloc(sizeof(SeqStackC));sC->top = -1;return sC;
}
/*push stack */
void push(int e,pSeqStack s,pSeqStackC sC)
{if (s->top > MAXSIZE - 1){cout<<"stack full"<<endl;}else if(s->top == -1){s->top++;s->data[s->top] = e;MinVal = e;MinValPos = s->top;sC->top++;sC->position[s->top] = s->top;}else{s->top++;s->data[s->top] = e;if(e < MinVal){MinVal = e;sC->top++;sC->position[s->top] = s->top;MinValPos = s->top;}else{sC->top++;sC->position[s->top] = MinValPos;}}
}
/*pop stack*/
int Pop(int &e,pSeqStack s,pSeqStackC sC)
{if (s->top < 0){cout<<"stack empty"<<endl;}else{e = s->data[s->top];s->top--;sC->top--;return e;}
}int Min(pSeqStack s,pSeqStackC sC)
{if (s->top == -1){cout<<"stack empty"<<endl;#ifdef  _DEBUGcout<<"kkk"<<endl;#endifreturn 0;}else{return s->data[sC->top];}}
int _tmain(int argc, _TCHAR* argv[])
{//int count = 0, k = 0;  //char cc;  char input[MAXSIZE];  memset(input, 0, MAXSIZE);  int e,MinVal;pSeqStack s;pSeqStackC sC;s = InitStack();sC = InitStackC();while (1){cout<<"input your operation"<<endl;cin>>input;if (strcmp(input ,"Push") == 0){cout<<"input push element"<<endl;cin>>e;push(e,s,sC);}else if (strcmp(input ,"Pop") == 0){e = Pop(e,s,sC);cout<<"pop value is:"<<e<<endl;}else if (strcmp(input ,"Min") == 0){e = Min(s,sC);cout<<"Min value is:"<<e<<endl;}else{break;}memset(input,0,MAXSIZE);}return 0;
}

每天一算法(二)实现栈的push pop 操作,并可以输出栈的最小值相关推荐

  1. 29. 栈的push,pop序列

    题目:给定2个整数序列,其中1个是栈的push顺序,判断另一个有没有可能是对应的pop顺序 解:其实这题主要是判断进栈次数和出栈次数誓不是相等.我是用栈作的,效率不高,每一个元素最多出栈1次,进栈1此 ...

  2. [WPS笔试题]实现栈的push,pop,max且时间复杂度为O(1)

    今天做了一下WPS的笔试题,遇到了一道关于栈的题,觉得挺有意思的,就写篇博客分享一下吧~~ 题目要求:要求实现栈的数据结构,在该类型中实现一个能够得到栈的最大元素的max函数,在该栈中,调用max,p ...

  3. c语言栈的实现以及操作_数据结构之链栈基本操作的实现详解(C语言描述)

    迎新过后,来带领你好好学习的小软准时归来,快带着上次学习链表操作的记忆和我开启新的旅程吧: 链栈:就是栈的链式存储结构,简称链栈. 首先我们要考虑的就是链栈的存储结构,由于栈只是在栈顶进行插入和删除操 ...

  4. 汇编自动出栈_汇编自学 (12) 重温进出栈指令PUSH POP 和双循环

    微软的masm5.0是8位平台的,6.0是16位平台的,还有其他32位平台的.现在编程一般用32位平台,8位和16位都可以在保护模式运行. 最简单的一个程序 assume cs: codesg cod ...

  5. 【Android 逆向】x86 汇编 ( push / pop 入栈 / 出栈 指令 | ret / retn 函数调用返回指令 | set 设置目标值指令 )

    文章目录 一.push / pop 入栈 / 出栈 指令 二.ret / retn 函数调用返回指令 三.set 设置目标值指令 总结 一.push / pop 入栈 / 出栈 指令 push / p ...

  6. python实现栈的操作_python简单实现队列和栈push、pop操作

    栈: # -*- coding: utf-8 -*- #定义序列 lst=[] def pop(): if(len(lst)==0): print"栈为空","无法出栈& ...

  7. JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)

    最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...

  8. 编写程序,使用一维数组,模拟栈数据结构。 要求: 1、这个栈可以存储java中的任何引用类型的数据。 2、在栈中提供push方法模拟压栈。(栈满了,要有

    代码 /*第一题:编写程序,使用一维数组,模拟栈数据结构.要求:1.这个栈可以存储java中的任何引用类型的数据.2.在栈中提供push方法模拟压栈.(栈满了,要有提示信息.)3.在栈中提供pop方法 ...

  9. 考研复习之数据结构笔记(五)栈和队列(上)(包含栈的相关内容)

    目录 一.栈的定义 1.1相关概念与特点 (1)相关概念 (2)相关特点 (3)栈的运算 (4)顺序栈和链式栈的区别 二.栈的表示和实现 2.1顺序栈的表示和实现 (1)结构体定义 (2)建立空栈 ( ...

最新文章

  1. Android学习记录之:Toast的使用
  2. How to protect video content (Flash Media Server)
  3. gpu装linux系统显示黑屏,linux操作系统安装gpu版本的paddlepaddle出现问题
  4. 计算机文献双语外文,中英文双语计算机专业毕业设计外文文献翻译成品:对Delphi的概述.docx...
  5. Java面向对象(16)--单例(Singleton)设计模式
  6. Method for Discovering Network Topology中文翻译【Z-Stack Home 1.2.0开发文档】
  7. jdbc连接oracle mysql_JDBC连接MySQL、Oracle和SQL server的配置
  8. matlab匿名函数求导,MATLAB匿名函数和函数句柄
  9. 通过Flex布局实现三等分
  10. 按键精灵打怪学习-多线程后台坐标识别
  11. 2018厦门大学计算机技术分数线,2018厦门大学专业排名及分数线 王牌专业有哪些...
  12. 大学计算机音乐一起学,和学生一起学音乐
  13. R项目:使用R分析人力资源数据
  14. 使用conda进行python环境管理
  15. char * const p; //常量指针,p的值不可以修改  char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p
  16. WordPress站点通过ReadmorJS实现展开阅读全文
  17. 自学Python标准库(1)
  18. SonTek -Argonaut-SL500流量计适配调试说明
  19. 自然语言语义相似度计算方法
  20. Power PMAC运动控制器 —— 学习笔记3

热门文章

  1. 【编译原理笔记01】什么是编译,编译系统各结构作用
  2. redmin3 忘记管理密码找回方法
  3. 冒泡排序 c语言,冒泡排序(C语言)
  4. 吉林建筑大学电气与计算机学院院长,吉林建筑大学电气与计算机学院研究生导师:张玉红...
  5. oracle x kglob,x$kglob x$kgllk x$kglpn
  6. 如何开启php socket,如何用php实现websocket?
  7. LED显示相关基础性知识总结
  8. fpga数电基础之--------基本概念
  9. 三维点云学习(4)3-Model Fitting Least Square
  10. 用MySQl创建供应商标_建立一个供应商、零件数据库。其中供应商表S(Sno,Sname,Zip - 问答库...