스택은 LinkedList로 구현할 것이다.
어차피 맨 위 값을 제외하고는 사용되지 않을것이기 때문이다.
각 정보를 저장할 노드를 만들어준다.
class Node
{
private Node before; // 이전 노드 가르킴
private int num;
public Node(Node before, int num)
{
this.before = before;
this.num = num;
}
public int getNum()
{
return num;
}
public Node getBefore()
{
return before;
}
}
그다음 노드를 저장하고 기능을 수행할 Stack 클래스를 만들어준다
class Stack
{
private Node node = null;
private int size = 0;
public void push(int value)
{
if(node == null)
{
node = new Node(null, value);
}
else
{
Node n = new Node(node, value);
node = n;
}
size++;
}
public int pop()
{
int value = -1;
if(node == null) return -1;
value = node.getNum();
node = node.getBefore();
size--;
return value;
}
public int size()
{
return size;
}
public boolean empty()
{
if(node == null) return true;
return false;
}
public int top()
{
if(node == null) return -1;
return node.getNum();
}
}
그다음 나머지 정보를 받아올 부분을 만든다
public void run()
{
int size = Integer.parseInt(readline());
for(int i = 0; i < size; i++)
{
String str = readline();
switch (str.charAt(0))
{
case 'p':
if(str.charAt(1) == 'u')
{
int num = Integer.parseInt(str.substring(5, str.length()));
stack.push(num);
continue;
}
if(str.charAt(1) == 'o')
{
print(stack.pop());
}
continue;
case 's':
print(stack.size());
continue;
case 'e':
print(stack.empty() ? 1 : 0);
continue;
case 't':
print(stack.top());
continue;
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Node
{
private Node before;
private int num;
public Node(Node before, int num)
{
this.before = before;
this.num = num;
}
public int getNum()
{
return num;
}
public Node getBefore()
{
return before;
}
}
class Stack
{
private Node node = null;
private int size = 0;
public void push(int value)
{
if(node == null)
{
node = new Node(null, value);
}
else
{
Node n = new Node(node, value);
node = n;
}
size++;
}
public int pop()
{
int value = -1;
if(node == null) return -1;
value = node.getNum();
node = node.getBefore();
size--;
return value;
}
public int size()
{
return size;
}
public boolean empty()
{
if(node == null) return true;
return false;
}
public int top()
{
if(node == null) return -1;
return node.getNum();
}
}
public class Main
{
private BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
private Stack stack = new Stack();
public void run()
{
int size = Integer.parseInt(readline());
for(int i = 0; i < size; i++)
{
String str = readline();
switch (str.charAt(0))
{
case 'p':
if(str.charAt(1) == 'u')
{
int num = Integer.parseInt(str.substring(5, str.length()));
stack.push(num);
continue;
}
if(str.charAt(1) == 'o')
{
print(stack.pop());
}
continue;
case 's':
print(stack.size());
continue;
case 'e':
print(stack.empty() ? 1 : 0);
continue;
case 't':
print(stack.top());
continue;
}
}
}
public String readline()
{
try {
return br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void print(long num)
{
System.out.println(num);
}
public static void print(String str)
{
System.out.println(str);
}
public static void main(String[] args) { new Main().run();}
}