H面试(22):设计一个栈,能输出当前栈中最小元素
来源:互联网 发布:java list泛型转换 编辑:程序博客网 时间:2024/06/05 07:35
#include<stdio.h>#include<malloc.h>#include<assert.h>struct StcakElement{int data; //插入的元素的数值int min; //存放当前栈中最小元素};struct Stack{StcakElement * pStackElement; //指向栈原始的指针,结合top就能操作栈顶元素int size; //存放栈的容量 int top; //存放下一个可用的栈的位置}; void StackInit(Stack* & pstack, int maxsize ) //栈的初始化 {assert(pstack); pstack->size = maxsize;pstack->top = 0;pstack->pStackElement =(StcakElement * )malloc(sizeof(StcakElement)*maxsize);}void StackFree (Stack stack) //将栈销毁,释放申请的空间,减size设为0;{free(stack.pStackElement);stack.size = 0;stack.top = 0;}void StackPush(Stack & stack, int data) //入栈操作,把里面的一些元素初始化{if(stack.top == stack.size)printf("out of stack space");StcakElement * p = stack.pStackElement+stack.top;//也可以不用这样的一个指针变量P,这样写是因为后面的实在有点长 p->data = data;if(stack.top == 0){ p->min =data;}else{p->min = (stack.pStackElement[stack.top-1]).min;//如果top不为0,则当前入栈的元素的min存放的是上一个栈顶元素中的最小值;}if(p-> min >data) //将当前元素和入栈前的最小元素进行比较,如果比之前的的小,就把当前入栈的元素设为自己的datap->min = data;(stack.top)++;}void StackPop(Stack &stack)//出栈操作{if(stack.top == 0)printf("stack is empty"); stack.pStackElement[--stack.top]; //将指示栈顶原始的值减1}int StackMin(Stack stack) //找到当前栈顶元素里存放的当前栈的最小值{if(stack.top == 0)printf("stack is empty");return stack.pStackElement[stack.top-1].min;}int main( ){ Stack stack; //初始化Stack * pa = & stack ; StackInit( pa,5);StackPush(*pa, 0); StackPush(*pa, 5);StackPush(*pa, 3);StackPush(*pa,1); StackPop(*pa); int min = StackMin(*pa);printf("栈中当前最小的元素为:%d\n", min);return 0;}
- H面试(22):设计一个栈,能输出当前栈中最小元素
- 程序员面试经典--返回栈中最小元素
- 栈中最小元素
- 实现一个能找到栈的最小元素的min函数
- Min栈——用O(1)时间复杂度返回当前栈中最小元素
- 求出栈中最小元素
- 155.Min Stack(求一个栈中的最小元素)
- 每次弹出一个栈的最小元素
- 算法与数据机构学习_第一章.栈和队列_1.设计一个有返回栈中最小元素功能的栈
- 设计一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作
- 程序员面试金典: 9.3栈与队列 3.2设计一个栈,除pop与push方法,支持返回栈最小元素min方法,时间复杂度均为O(1)
- 输出一个删除能被3整除元素的数组
- 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132
- 面试训练O(1)时间取得栈内最小元素
- 快速寻找栈中最小元素
- 找出栈中最小的元素
- H面试程序(12): 输出字符串中第一个只出现一次的字母
- 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个
- 用html的ul和li标签做图片展示功能
- java接口的作用
- 转:【给硕士生的一点经验之谈】
- 机制与策略
- PHP+Apache+Mysql 配置流程【配置之后才能正常使用】
- H面试(22):设计一个栈,能输出当前栈中最小元素
- Linux下的多线程编程
- SQL Server 2000的两种身份验证及Windows身份验证的优点
- web 的高并发
- 手机刷机升级介绍
- 天梯题目解答--通过初赛1-2
- 对.Net 垃圾回收Finalize 和Dispose的理解
- u-boot-2013.07在mini2440上的移植(一):使用默认测试u-boot.bin
- OC中获取某个数的绝对值