输入数据
实现栈
输入:
6
push 1
pop
top
push 2
push 3
pop
输出:
1
error
3
C++
#include <iostream>
using namespace std;
int arr[100010];
int cnt = 0;
void push(int val) {
arr[cnt ++] = val;
}
string top(){
if(cnt <= 0)
return "error";
return to_string(arr[cnt - 1]);
}
string pop() {
if(cnt <= 0)
return "error";
cnt --;
return to_string(arr[cnt]);
}
int main() {
int n;
cin >> n;
while(n --) {
string op;
int val;
cin >> op;
if(op == "push") {
cin >> val;
push(val);
}
if(op == "top") {
cout << top() << endl;
}
if(op == "pop") {
cout << pop() << endl;
}
}
}
JAVA(Scnner):
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static int[] arr = new int[100010];
public static int cnt = 0;
public static void push(int val) {
arr[cnt ++] = val;
}
public static String pop() {
if(cnt <= 0)
return "error";
cnt --;
return String.valueOf(arr[cnt]);
}
public static String top() {
if(cnt <= 0) {
return "error";
}
return String.valueOf(arr[cnt - 1]);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int n = in.nextInt();
while(n --> 0){
String op = in.next();
if("push".equals(op)) {
int val = in.nextInt();
push(val);
}
if("pop".equals(op)) {
System.out.println(pop());
}
if("top".equals(op)) {
System.out.println(top());
}
}
in.close();
}
}
Java(br):
br.read() 只能读一个字符,例如输入6,则int为54,也就是ASCII码
直接用readLine()
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static int[] arr = new int[100010];
public static int cnt = 0;
public static void push(int val) {
arr[cnt ++] = val;
}
public static String pop() {
if(cnt <= 0)
return "error";
cnt --;
return String.valueOf(arr[cnt]);
}
public static String top() {
if(cnt <= 0) {
return "error";
}
return String.valueOf(arr[cnt - 1]);
}
public static void main(String[] args) throws IOException {
// Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.valueOf(br.readLine());
//int n = in.nextInt();
while(n --> 0){
String[] t = br.readLine().split(" ");
String op = t[0];
if("push".equals(op)) {
int val = Integer.valueOf(t[1]);
push(val);
}
if("pop".equals(op)) {
System.out.println(pop());
}
if("top".equals(op)) {
System.out.println(top());
}
}
br.close();
// in.close();
}
}