刷题-牛客算法入门

刷题-牛客算法入门,第1张

AB1 栈

描述
请你实现一个栈。

*** 作:
push x:将加x入栈,保证 为 int 型整数。
pop:输出栈顶,并让栈顶出栈
top:输出栈顶,栈顶不出栈

输入描述:
第一行为一个正整数n,代表 *** 作次数。(1≤n≤100000)接下来的n,每行为一个字符串,代表一个 *** 作。保证 *** 作是题目描述中三种中的一种。

输出描述:
如果 *** 作为push,则不输出任何东西。
如果为另外两种,若栈为空,则输出 "error“
否则按对应 *** 作输出。

我的实现:(通过链表实现下压栈)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        MyStack myStack = new MyStack();
        while (scanner.hasNext()) {
            String str = scanner.nextLine();
            String[] result = str.split(" ");
            if (result[0].equals("push")) {
                myStack.push(Integer.parseInt(result[1]));
            } else if (result[0].equals("pop")) {
                myStack.pop();
            } else if (result[0].equals("top")) {
                myStack.top();
            }    
        }
        scanner.close();
    }
}

class MyStack {
    private int n = 0;
    private Node first;
    
    private class Node {
        int item;
        Node next;
    }
    
    public void push (int x) {
        Node oldFirst = first;
        first = new Node();
        first.item = x;
        first.next = oldFirst;
        n++;
    }
    
    public void pop() {
        if (n <= 0) {
            System.out.println("error");
            return;
        }
        int item = first.item;
        first = first.next;
        n--;
        System.out.println(item);
    }
    
    public void top() {
        if (n <= 0) {
            System.out.println("error");
        } else {
            System.out.println(first.item);
        }
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/888918.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存