具体实现代码如下:

stack.h内容如下:

#ifndef _STACK_H_
#define _STACK_H_
#define NUM 256
typedef struct _tagStack
{
int m_Array[NUM];
int m_nTop;
}Stack;
void InitStack(Stack * pStack);
int Push(Stack * pStack, int nNum);
int Pop(Stack * pStack);
int IsEmtpy(Stack * pStack);
int Top(Stack * pStack);
void PrintStack(Stack * pStack);
int GetMin(Stack * pStack);
#endif

stack.cpp的内容如下:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "stack.h" Stack TempStack = { 0 };
int nMinIndex = -1; void InitStack(Stack * pStack)
{
if (!pStack)
return;
memset(pStack->m_Array, 0, NUM);
pStack->m_nTop = -1;
memset(TempStack.m_Array, 0, NUM);
TempStack.m_nTop = -1;
return;
} int Push(Stack * pStack, int nNum)
{
if (!pStack)
return 0;
if (pStack->m_nTop + 1 >= NUM)
return 0;
if (nMinIndex == -1)
{
nMinIndex = 0;
TempStack.m_nTop++;
TempStack.m_Array[TempStack.m_nTop] = nMinIndex;
}
else
{
if (nNum < pStack->m_Array[nMinIndex])
{
nMinIndex = pStack->m_nTop + 1;
}
TempStack.m_nTop++;
TempStack.m_Array[TempStack.m_nTop] = nMinIndex;
}
pStack->m_nTop++;
pStack->m_Array[pStack->m_nTop] = nNum;
return 1;
} int Pop(Stack * pStack)
{
int nRet = 0;
if (!pStack)
return 0;
if (pStack->m_nTop < 0)
return 0;
nRet = pStack->m_Array[pStack->m_nTop--];
TempStack.m_nTop--;
return 1;
} int IsEmtpy(Stack * pStack)
{
if (!pStack)
return -1;
if (pStack->m_nTop == -1)
return 1;
return 0;
} int Top(Stack * pStack)
{
if (!pStack)
return 0;
if (pStack->m_nTop < 0)
return 0;
return pStack->m_Array[pStack->m_nTop];
} void PrintStack(Stack * pStack)
{
int i = 0;
if (!pStack)
return;
printf("栈元素:\n");
for (i = 0; i <= pStack->m_nTop; i++)
{
printf("%d ", pStack->m_Array[i]);
}
printf("\n");
return;
} int GetMin(Stack * pStack)
{
if (!pStack)
return 0;
if (TempStack.m_nTop >= 0)
{
if (pStack->m_nTop == TempStack.m_nTop)
{
return pStack->m_Array[TempStack.m_Array[TempStack.m_nTop]];
}
}
return -1;
}

main.cpp的内容如下:

#include <stdlib.h>
#include <stdio.h>
#include "stack.h"
void main()
{
Stack MyStack;
InitStack(&MyStack);
Push(&MyStack, 3);
Push(&MyStack, 4);
Push(&MyStack, 5);
Push(&MyStack, 2);
Push(&MyStack, 1);
PrintStack(&MyStack);
printf("最小值:\n");
while (IsEmtpy(&MyStack) != 1)
{
printf("%d\n", GetMin(&MyStack));
Pop(&MyStack);
}
system("pause");
return;
}

运行效果如图1所示:

aaarticlea/png;base64,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" alt="" />

图1 运行效果

定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值,并且要求Min的时间复杂度为O(1)的更多相关文章

  1. 包含MIN函数的栈+一个数组实现两个堆栈+两个数组实现MIN栈

    1.题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 思路:利用一个辅助栈来存放最小值     栈  3,4,2,5,1     辅助栈 3,2,1 每入栈一次,就与辅 ...

  2. 剑指Offer面试题:19.包含Min函数的栈

    一.题目:包含Min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). 这里我们要实现的就是min ...

  3. MS - 2 - 设计包含 min 函数的栈

    定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素. 要求函数 min.push 以及 pop 的时间复杂度都是 O(1). template<typename T> st ...

  4. 【编程题目】设计包含 min 函数的栈

    2.设计包含 min 函数的栈(栈)定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素.要求函数 min.push 以及 pop 的时间复杂度都是 O(1). 我的思路: 用一个额外的 ...

  5. 剑指Offer:面试题21——包含min函数的栈(java实现)

    问题描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push及pop的时间复杂度都是O(1). 思路:加入一个辅助栈用来存储最小值集合 (这里要注 ...

  6. 2.设计包含 min 函数的栈[StackWithMinValue]

    [题目]: 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素.要求函数min.push以及pop的时间复杂度都是O(1). [解法一]: 使用一个辅助栈来保存最小元素,其栈顶元素为当前栈 ...

  7. 【算法题目】包含min函数的栈

    题目来源:<剑指offer>面试题21 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push以及pop的时间复杂度都是O(1). 分 ...

  8. (剑指Offer)面试题21:包含min函数的栈

    题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 在该栈中,调用min,push,pop的时间复杂度都是O(1) 思路: 1.除了原来的栈s,增加一个辅助栈s_min,用 ...

  9. 设计包含min函数的栈

    stack<pair<int, int>> sta; void push(int x) { int min_i; if(sta.empty()) { min_i = x; } ...

  10. 剑指offer-面试题21.包含min函数的栈

    题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数. 在该栈中,调用min,push及pop的时间复杂度都是O(1). 这一题实际上需要一个辅助栈存储最小值: 1.在模板类定 ...

随机推荐

  1. Project Euler:Problem 55 Lychrel numbers

    If we take 47, reverse and add, 47 + 74 = 121, which is palindromic. Not all numbers produce palindr ...

  2. 亲测 安装 mysql5.5 64位

    1.选择 customn 更改安装目录2.选择 develop 模式,默认,占用内存较小. server machine 中等内存 dedicate mysql server machine 专用服务 ...

  3. 2015 UESTC Training for Search Algorithm & String - J - 全都是秋实大哥 【KMP】

    给出一个字符串,求每个前缀的最小循环节长度,并输出整个字符串的最小循环节.字符串长度为3*10^6 找循环节这种问题还是要用KMP对于长度为i的字符串 i%(i-f[i])==0 此时,它的最小循环节 ...

  4. HDU3853

    题意:给R*C的迷宫,起点为1,1 终点为R,C 且给定方格所走方向的概率,分别为原地,下边,右边,求到终点的期望. 思路:既然是求到终点的期望,那么DP代表期望,所以DP[i][j]=原地的概率*D ...

  5. python面对对象编程---------6:抽象基类

    抽象基本类的几大特点: 1:要定义但是并不完整的实现所有方法 2:基本的意思是作为父类 3:父类需要明确表示出那些方法的特征,这样在写子类时更加简单明白 用抽象基本类的地方: 1:用作父类 2:用作检 ...

  6. solr可用于集群的搜索 【转】

    一. SOLR搭建企业搜索平台 运行环境: 运行容器:Tomcat6.0.20 Solr版本:apache-solr-1.4.0 分词器:mmseg4j-1.6.2  词库:sogou-dic 准备工 ...

  7. NSUserDefaults 很详细的介绍使用(转发)

    http://my.oschina.net/u/1245365/blog/294449

  8. Swift - 28 - 内部参数名和外部参数名

    //: Playground - noun: a place where people can play import UIKit // 外部参数的作用是为了让程序员调用代码的时候能清晰的看出所传参数 ...

  9. 安卓 报错 Check the Eclipse log for stack trace.

    移除Android Dependencies就行了. 在properties的Libraries里

  10. Android获取屏幕的高度和宽度

    方法一: DisplayMetrics metrics=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics( ...