题解 | #包含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;
}

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 10:56
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务