白俊10828号です.
1907 ワード
白準10828号は資料構造の基礎の一つであるスタックに関する問題である.
データ構造スタックは、基本的にFILA、LIFAの構造を有する.つまり、先に入った資料は後で出て、後に入った資料は先に出ます.
図に示すように、
資料1は最初に入った資料で、資料2はその後入った資料です.その後、順番に資料を取り出し、資料2(後で入った資料)が出てくると、資料1(先に入った資料)が出てきます.
この問題では、5つのコマンドがあり、各コマンド
push:スタックに数字を入れます.
pop:スタック内の数値を削除し、数値を出力します.
size:スタック内部の数を出力します.
Empty:スタックが空で出力されているかどうかを確認します.空の場合は1、空でない場合は0を出力します.
トップ:スタックの上部数値を出力します.stackが空の場合、-1が出力されます.
意味がある.
stackの基本構造とコマンドの使用方法を理解すれば、コードは簡単に作成できます.
データ構造スタックは、基本的にFILA、LIFAの構造を有する.つまり、先に入った資料は後で出て、後に入った資料は先に出ます.
図に示すように、
資料1は最初に入った資料で、資料2はその後入った資料です.その後、順番に資料を取り出し、資料2(後で入った資料)が出てくると、資料1(先に入った資料)が出てきます.
この問題では、5つのコマンドがあり、各コマンド
push:スタックに数字を入れます.
pop:スタック内の数値を削除し、数値を出力します.
size:スタック内部の数を出力します.
Empty:スタックが空で出力されているかどうかを確認します.空の場合は1、空でない場合は0を出力します.
トップ:スタックの上部数値を出力します.stackが空の場合、-1が出力されます.
意味がある.
stackの基本構造とコマンドの使用方法を理解すれば、コードは簡単に作成できます.
#include <stdio.h>
#include <string.h>
#define MAX 10000
int stack[MAX];
int top = -1;
void push(int);
int pop();
int main(void) {
int num;
scanf("%d", &num);
char order[6]; int input_num;
for (int i = 0; i < num; i++) {
scanf("%s", order);
if (strcmp(order, "push") == 0) {
scanf("%d", &input_num);
push(input_num);
}
else if (strcmp(order, "pop") == 0) {
printf("%d\n", pop());
}
else if (strcmp(order, "size") == 0) {
printf("%d\n", top + 1);
}
else if (strcmp(order, "empty") == 0) {
if (top == -1) {
printf("%d\n", 1);
}
else {
printf("%d\n", 0);
}
}
else if (strcmp(order, "top") == 0) {
if (top == -1) {
printf("%d\n", -1);
}
else {
printf("%d\n", stack[top]);
}
}
}
}
void push(int a) {
if (top < MAX) {
stack[++top] = a;
}
}
int pop() {
if (top > -1) {
return stack[top--];
}
else {
return -1;
}
}
Reference
この問題について(白俊10828号です.), 我々は、より多くの情報をここで見つけました https://velog.io/@shinhs9902/백준-10828번テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol