描述
请你实现一个栈。
*** 作:
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);
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)