알고리즘 훈련소 1 - 1 - 1
창고.
묘사 하 다.
하나의 스 택 을 실현 하여 다음 과 같은 기능 을 완성 합 니 다.
입 점
출고
스 택 의 위치 Y 가 누구 인지 물 어보 세 요.
처음에는 창고 가 비 었 다.스 택 의 위 치 는 1 부터 시작 합 니 다.
입력
첫 번 째 줄 의 정수 n 은 조작 개 수 를 나타 낸다.
다음 n 줄, 각 줄 의 첫 번 째 숫자 는 조작 을 표시 합 니 다 (설명 참조).
4. 567917. 숫자 1 이면 다음 문자열 X 가 있 는데 X 를 스 택 에 넣 는 것 을 나타 낸다
4. 567917. 숫자 2 라면 스 택 지붕 (스 택 이 비어 있 지 않 음 을 보증 합 니 다) 을 팝 업 하고 스 택 을 출력 하 는 이 사람 을 표시 합 니 다
4. 567917. 숫자 3 이면 그 다음 에 정수 Y 가 있 는데 스 택 의 위치 Y 가 누구 인지 물 어보 고 이름 을 출력 합 니 다
출력
모든 조작 2 와 조작 3 을 한 줄 씩 출력 합 니 다.
입력 샘플
11 1 a 1 b 1 c 3 1 3 2 3 3 2 1 d 3 1 3 2 3 3
출력 샘플
a b c c a b d
제한 하 다.
30% 의 데이터 에 대해 1 ≤ n ≤ 2000;
다른 30% 의 데이터 에 대해 3 을 조작 하지 않 았 습 니 다.
100% 의 데이터 에 대하 여 1 ≤ n ≤ 100000.
데이터 에 나타 난 문자열 은 26 개의 소문 자 (빈 칸 등분 자 없 음) 만 포함 하고 길 이 는 15 를 초과 하지 않 습 니 다.
문자열 이 중 복 될 수 있 습 니 다.현실 적 으로 이름 이 바 뀔 수 있 듯 이.
시간: 2 sec
공간: 256 MB
[창고 에 들 어 가 는 것 과 나 가 는 것 은 모두 창고 지붕 을 조작 하고 있다.]
[n 크기 의 배열 을 열 고 스 택 지붕 의 위 치 를 기록 합 니 다. 스 택 에 들 어가 서 스 택 을 나 오 는 것 은 이 스 택 의 지붕 을 1 로 줄 이 는 것 입 니 다. 스 택 의 한 위치 Y 는 배열 에 해당 하 는 아래 표 시 는 Y 입 니 다.]
c + + 버 전
#include
/*define :1. :#define :#define MAXNUM 99999
2.#define ( ) :#define add(x, y) (x + y), add ,
*/
#define N 100000
using namespace std;
// : ?
// static 。 。
// ( static ) 0, 。
// top n 0.
string Stack[N];//
int top,n;// top——
void push(string name) {
//
//++top
// top+1 name
Stack[++top] = name;
}
string pop() {
//
// -1
//
// : , ?
return Stack[top--];
}
string query(int index) {
//
//
return Stack[index];
}
int main() {
int n;//
string elem;
cin >> n;
for (; n--; ) {
int num;
cin >>num;
if (num == 1) {
cin >> elem;
push(elem);
} else if (num == 2) {
cout << pop() << endl;
} else {
int index;
cin >> index;
cout << query(index) << endl;
}
}
return 0;
}
자바 버 전
import java.util.Scanner;
/* : */
public class Main {
public static void main(String[] args) {
int n;
int num;
String input;
String x;
Scanner scanner = new Scanner(System.in);
n = Integer.parseInt(scanner.next());
for (int i = 0; i < n; i++){
num = Integer.parseInt(scanner.next());
if (num == 1){
input = scanner.next();
stack.Push(input);
}
else if (num == 2){
x = stack.Pop();
System.out.println(x);
}
else{
int index;
index = Integer.parseInt(scanner.next());
System.out.println(stack.GetElem(index));
}
}
}
}
class stack{
private static int Maxsize = 10000;
private static int top = -1;
private static String [] stack = new String[Maxsize];
public static String GetElem(int index) {
return stack[index-1];
}
public static String Pop() {
String elem = null;
if (top != -1){
elem = stack[top];
top--;
}
return elem;
}
public static void Push(String input) {
if (top != Maxsize - 1){
top += 1;
stack[top] = input;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.