题解 | #【模板】栈#

【模板】栈

https://www.nowcoder.com/practice/104ce248c2f04cfb986b92d0548cccbf

use std::io::{self, *};
use std::result::Result;

struct Stack {
    s: [i32; 100_010],
    tt: usize,
}

impl Stack {
    fn new() -> Stack {
        Stack {
            s: [0; 100_010],
            tt: usize::MAX,
        }
    }

    fn push(&mut self, x: i32) {
        self.tt += 1;
        self.s[self.tt] = x;
    }

    fn pop(&mut self) -> Result<(), &'static str> {
        if self.tt != usize::MAX {
            println!("{}", self.s[self.tt]);
            self.tt -= 1;
            Ok(())
        } else {
            Err("error")
        }
    }

    fn top(&self) -> Result<(), &'static str> {
        if self.tt != usize::MAX {
            println!("{}", self.s[self.tt]);
            Ok(())
        } else {
            Err("error")
        }
    }
}

fn main() {
    let mut s = Stack::new();
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines().map(|l| {
        l.unwrap()
    });

    if let Ok(n) = lines.next().unwrap().parse::<usize>() {
        for _ in 0..n {
            let line = lines.next().unwrap();
            let tokens: Vec<&str> = line.split_whitespace().collect();

            if let Some(op) = tokens.get(0) {
                match *op {
                    "push" => {
                        if let Ok(x) = tokens[1].parse::<i32>() {
                            s.push(x);
                        }
                    }
                    "pop" => {
                        if let Err(err) = s.pop() {
                            println!("{}", err);
                        }
                    }
                    "top" => {
                        if let Err(err) = s.top() {
                            println!("{}", err);
                        }
                    }
                    _ => (),
                }
            }
        }
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 11:16
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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