题解 | #包含min函数的栈#
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param value int整型 * @return 无 */ //思路:定义数组当做栈来使用 //准备:定义一个栈数组,定义一个指针下标 //压入: //判满 //直接将值赋值给数组,下标自增 //弹出: //判空 //直接下标自减,即可, //获取top的值: //判空 //一般在前面top都比实际大一,要减一 //获取min值: //判空 //定义一个变量,数组首位的量, //然后通过循环比较,找出最小值,注意条件, //for循环,程序执行顺序for(1;2;4){3} //代码: //准备:定义一个栈数组,定义一个指针下标:stack[301];实际下标0-300 #define Max 301 struct Stack { int data[Max]; int top; }; struct Stack stack; void push(int value ) { // write code here //判满 if(stack.top == Max) { printf("栈已满"); } //直接将值赋值给数组,下标自增 stack.data[stack.top++] = value; } void pop() { // write code here //判空 if(stack.top ==0) { printf("栈为空"); } //直接下标自减,即可, --stack.top; } int top() { // write code here //判空 if(stack.top ==0) { printf("栈为空"); } //一般在前面top都比实际大一,要减一 return stack.data[stack.top-1]; } int min() { // write code here //判空 if(stack.top ==0) { printf("栈为空"); return -1; } //定义一个变量,数组首位的量, int temp = stack.data[0]; //然后通过循环比较,找出最小值,注意条件 //for循环,程序执行顺序for(1;2;4){3} for(int i=0; i<stack.top; ++i) { temp = temp < stack.data[i]? temp: stack.data[i]; printf("%d", temp); } return temp; }