반응형
[광고 누르면 오늘의 행운 상승!!]
스택(Stack)의 특성
- 물건을 쌓아 올리듯 자료를 쌓아 올린 형태의 자료구조이다.
- 스택에 저장된 자료는 선형 구조를 갖는다.
- 선형 구조 : 자료 간의 관계가 1:1의 관계를 갖는다.
- 비선형 구조 : 자료 간의 관계가 1대N의 관계를 갖는다. (예 : 트리)
- 스택에 자료를 삽입하거나 스택에서 자료를 꺼낼 수 있다.
- 마지막에 삽입한 자료를 가장 먼저 꺼낸다. 후입선출(LIFO, Last-In-First-Out) 이라고 부른다.
- 예를 들어 스택에 1,2,3 순으로 자료를 삽입한 후 꺼내면 역순으로 즉 3,2,1 순으로 꺼낼 수 있다.
구현 코드
package Stack;
import java.util.Arrays;
import java.util.Stack;
public class StackTest {
public static int[] stack = new int[10];
public static int top = -1;
public static boolean push(int value) {
if(top >= stack.length)return false;
stack[++top] = value;
return true;
}
public static int pop() {
if(top==-1) return -1;
return stack[top--];
}
public static int peek() {
if(top==-1) return -1;
return stack[top];
}
public static boolean isEmpty() {
return top==-1;
}
public static void main(String[] args) {
push(1);
System.out.println(Arrays.toString(stack));
System.out.println(isEmpty());
push(2);
push(3);
push(4);
System.out.println(Arrays.toString(stack));
System.out.println(pop());
System.out.println(peek());
System.out.println(pop());
System.out.println(pop());
System.out.println(Arrays.toString(stack));
System.out.println();
Stack<Character> s = new Stack<>();
s.push('a');
System.out.println(s.empty());
System.out.println(isEmpty());
s.push('2');
s.push('3');
System.out.println(s.pop());
System.out.println(s.peek());
System.out.println(s.pop());
System.out.println(s.pop());
}
}
리스트를 이용한 스텍(LinkedStack)
-
리스트를 이용한 스텍이란?
리스트를 이용하여 스텍을 구현할 수 있다.
스텍의 원소 : 리스트의 노드
- 스택 내의 순서는 리스트의 링크를 통해 연결됨
- push : 리스트의 마지막에 노드 삽입
- pop : 리스트의 마지막 노드 반환/삭제
변수 top
- 리스트의 마지막 노드를 가리키는 변수
- 초기 상태 : top = null
package ArrayList;
public class LinkedStackTest {
public static Node top = null;
public static boolean isEmpty() {
return top == null;
}
public static void push(int data) {
top = new Node(data,top);
}
public static int pop() {
if(isEmpty()) return -1;
int data = top.data;
top = top.link;
return data;
}
public static int peek() {
if(isEmpty()) return -1;
int data = top.data;
return data;
}
public static void main(String[] args) {
push(11);
push(22);
push(33);
System.out.println(peek());
System.out.println(pop());
System.out.println(pop());
}
}
반응형
'4. 자료구조 > 1. 선형(Stack, Queue, List)' 카테고리의 다른 글
ArrayList (0) | 2020.03.02 |
---|---|
PriorityQueue (0) | 2020.03.02 |
Queue (0) | 2020.03.02 |