ย Stack ๊ตฌํ ๋ฌธ์
์คํ์ด๋ ์๋์ ๊ฐ์ ๊ตฌ์กฐ์ด๋ค.
๊ทธ๋ฆผ์ผ๋ก ํํ ํ๋ฉด ์๋์ ๊ฐ๋ค.
์ฆ, ๊ฐ์ฅ ์ต๊ทผ์ ์คํ์ ์ถ๊ฐํ ํญ๋ชฉ์ด ๊ฐ์ฅ ๋จผ์ ์ ๊ฑฐ๋ ํญ๋ชฉ์ด๋ค.
์คํ์ ๊ตฌํ
pop()
๊ฐ์ฅ ์ต ์์์ ์์นํ ์๋ฃ๋ฅผ ์ถ์ถํ ํ์ ์คํ์์ ์ ๊ฑฐํ๋ค
push(item)
์คํ์ ์ต ์์์ ์๋ก์ด ์๋ฃ๋ฅผ ์ฝ์
ํ๋ค
isEmpty()
์คํ์ด empty ์ํ์ธ์ง ํ์ธํ๋ค. ๋น์ด ์์ผ๋ฉด true๋ฅผ ๋ฐํํ๋ค
clear()
์คํ์ ์กด์ฌํ๋ ๋ชจ๋ ์๋ฃ๋ค์ ์ญ์ ํ๋ค
peek()
๊ฐ์ฅ ์ต ์์์ ์์นํ ์๋ฃ๋ฅผ ์ถ์ถํ๋ค
pop ๋ฉ์๋์๋ ๋ฌ๋ฆฌ ์คํ์์ ์ ๊ฑฐํ์ง๋ ์๋๋ค.
ย ํ์ด
package com.quiz.stack;
import java.util.Arrays;
import java.util.Scanner;
interface Stack {
void pop();
void push(char item);
boolean isEmpty();
void clear();
void peek();
}
class StackImpl implements Stack {
private int inpNum;
private int arrNum;
private char[] charArr;
private String tmp;
private char item;
public void setTmp(char inpChar) {
this.tmp += inpChar;
}
public StackImpl(int inpNum) {
charArr = new char[inpNum];
}
@Override
public void pop() {//์ต์์ ์๋ฃ ์ญ์
for (int i = 0; i < charArr.length; i++) {
if (charArr[i] == 0) {
int last = i - 1;
charArr[last] = 0;
arrNum = last;
break;
}
}
print(charArr, arrNum);
}
@Override
public void push(char item) {//์๋ฃ ์
๋ ฅ
for (int i = 0; i < charArr.length; i++) {
if (charArr[i] == 0) {
charArr[i] = item;
setTmp(item);
arrNum = i + 1;
break;
}
}
print(charArr, arrNum);
}
@Override
public boolean isEmpty() {
if (charArr.length == 0) {
return true;
}
return false;
}
@Override
public void clear() {
Arrays.fill(charArr, (char) 0);
arrNum = 0;
System.out.println("์คํ์ด ์ด๊ธฐํ ๋์์ต๋๋ค.");
System.out.println("Stack is empty !");
}
@Override
public void peek() {
for (int i = 0; i < charArr.length; i++) {
if (charArr[i] == 0) {
int last = i - 1;
arrNum = last;
break;
}
System.out.println("Stack elements : " + charArr[i]);
}
}
private void print(char[] charArr, int arrNum) {
System.out.print("Stack elements : ");
for (int i = 0; i < arrNum; i++) {
System.out.print(charArr[i]);
}
System.out.println();
}
}
public class StackMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("์คํ ์ฌ์ด์ฆ๋ฅผ ์
๋ ฅํ์์ค >> ");
int inpNum = sc.nextInt();
Stack stack = new StackImpl(inpNum);
System.out.println("์
๋ ฅ๋ ๋ฌธ์ : A");
stack.push('A');
System.out.println("์
๋ ฅ๋ ๋ฌธ์ : B");
stack.push('B');
System.out.println("์
๋ ฅ๋ ๋ฌธ์ : C");
stack.push('C');
System.out.println("์ญ์ ๋ ๋ฌธ์ : C");
stack.pop();
System.out.println("์ญ์ ๋ ๋ฌธ์ : B");
stack.pop();
System.out.println("์ฟ๋ณผ๋ ค๋ ๋ฌธ์ : A");
stack.peek();
stack.clear();
}
}
Java
๋ณต์ฌ
๊ฒฐ๊ณผ
์คํ ์ฌ์ด์ฆ๋ฅผ ์
๋ ฅํ์์ค >> 5
์
๋ ฅ๋ ๋ฌธ์ : A
Stack elements : A
์
๋ ฅ๋ ๋ฌธ์ : B
Stack elements : AB
์
๋ ฅ๋ ๋ฌธ์ : C
Stack elements : ABC
์ญ์ ๋ ๋ฌธ์ : C
Stack elements : AB
์ญ์ ๋ ๋ฌธ์ : B
Stack elements : A
์ฟ๋ณผ๋ ค๋ ๋ฌธ์ : A
Stack elements : A
Stack is empty !