Stack
1. LIFO (Last In First Out)
-
먼저 들어간 데이터가 제일 나중에 나옴. 후입선출
-
데이터는 하나씩 넣고 뺀다
하나의
입출력 방향을 가진다
- 입출력 방향이 여러 개라면 Stack 자료 구조 X
- Stack에 데이터를 넣는 것은 'PUSH', 데이터를 꺼내는 것은 'POP'이라고 한다.
실사용 예제
브라우저에서 자료구조 Stack이 사용될 때
- 새로운 페이지로 접속할 때, 현재 페이지를 Prev Stack에 보관.
- 뒤로 가기 버튼을 눌러 이전 페이지로 돌아갈 때에는, 현재 페이지를 Next Stack에 보관하고 Prev Stack에 가장 나중에 보관된 페이지를 현재 페이지로 가져온다.
- 앞으로 가기 버튼을 눌러 앞서 방문한 페이지로 이동을 원할 때에는, Next Stack의 가장 마지막으로 보관된 페이지를 가져온다.
- 마지막으로 현재 페이지를 Prev Stack에 보관.
Stack 선언
Stack<Integer> stack = new Stack<>();
Stack<String> stack = new Stack<>();
Stack 값 추가, 삭제 등
1. push(A)
- 스택에 데이터 A 추가
- push는 Exception 리턴
2. add(A)
- 스택에 데이터 A 추가
- add는 boolean형 리턴
3. peek()
4. pop()
5. size()
4. Empty()
5. remove()
- search(A)
Queue
1. FIFO (First In First Out)
-
먼저 들어간 데이터가 제일 먼저 나오는 선입선출의 구조
-
데이터는 하나씩 넣고 뺄수 있다.
두 개의
입출력 방향을 가진다.
실사용 예제
프린터에서 자료구조 Queue
-
문서를 작성하고 출력 버튼을 누르면 해당 문서는 인쇄 작업 (임시 기억 장치의) Queue에 들어간다.
-
프린터는 인쇄 작업 Queue에 들어온 문서를 순서대로 인쇄.
Queue 선언 (Integer형)
Queue<Integer> q = new LinkedList<>();
Queue에 값 추가, 삭제 등
1. add()
- 삽입 성공 시 true 반환, 하지만 사용 가능한 공간이 없어 삽입 실패 시 IllegalStateException 발생
2. remove()
3. peek()
-
앞에 있는 데이터를 반환
-
비어있을 경우 null 반환
4. isEmpty()
-
큐가 비어있는 확인한다.
-
비어 있을 경우 null 반환
5. poll()
-
앞에 있는 데이터 반환 후 삭제
-
비어 있을 경우 null 반환