zoukankan      html  css  js  c++  java
  • Stack设计Min函数栈(用一个栈或者用两个栈模拟)

    代码比较简单,测试都懒得了,这个问题思想是精华。

    View Code
      1 #include<iostream>
    2 using namespace std;
    3
    4 class Stack
    5 {
    6 private:
    7 int *elements;
    8 int top;
    9 int maxSize;
    10
    11 public:
    12 Stack(int sz=50):top(-1),maxSize(sz)
    13 {
    14 elements=new int[maxSize];
    15 }
    16
    17 void push(int x)
    18 {
    19 elements[++top]=x;
    20 }
    21
    22 int pop()
    23 {
    24 top--;
    25 return elements[top+1];
    26 }
    27
    28 int peek()
    29 {
    30 return elements[top];
    31 }
    32
    33 bool isEmpty()
    34 {
    35 return (top==-1)?true:false;
    36 }
    37 };
    38
    39 class NewStack1
    40 {
    41 private:
    42 Stack dataStack;
    43 Stack minStack;
    44 public:
    45 NewStack1()
    46 {
    47 }
    48 void push(int x)
    49 {
    50 dataStack.push(x);
    51 if(minStack.isEmpty())
    52 minStack.push(x);
    53 if(x>minStack.peek())
    54 minStack.push(minStack.peek());
    55 else
    56 minStack.push(x);
    57 }
    58 int pop()
    59 {
    60 if(dataStack.isEmpty())
    61 {
    62 cout<<"pop出错,栈为空!"<<endl;
    63 }
    64 minStack.pop();
    65 return dataStack.pop();
    66 }
    67 int min()
    68 {
    69 if(dataStack.isEmpty())
    70 {
    71 cout<<"pop出错,栈为空!"<<endl;
    72 }
    73 return minStack.peek();
    74 }
    75 };
    76
    77 class NewStack2
    78 {
    79 private:
    80 Stack stack;
    81 public:
    82 NewStack2()
    83 {
    84 }
    85
    86 void push(int x)
    87 {
    88 if(stack.isEmpty())
    89 {
    90 stack.push(x);
    91 stack.push(x);
    92 }
    93 if(x>stack.peek())
    94 {
    95 int min=stack.peek();
    96 stack.push(x);
    97 stack.push(min);
    98 }
    99 else
    100 {
    101 stack.push(x);
    102 stack.push(x);
    103 }
    104 }
    105
    106 int pop()
    107 {
    108 stack.pop();
    109 return stack.pop();
    110 }
    111
    112 int min()
    113 {
    114 return stack.peek();
    115 }
    116 };
  • 相关阅读:
    python之字典
    Python包管理工具
    【转】Python实现修改Windows CMD命令行输出颜色(完全解析)
    进程池中传递实例方法问题
    HTML协议详解
    【转】python数据格式化之pprint
    【转】Python装饰器与面向切面编程
    【转】TCP/IP报文格式
    python之线程学习
    python之面向对象
  • 原文地址:https://www.cnblogs.com/YipWingTim/p/2250072.html
Copyright © 2011-2022 走看看