[자료구조] 1. Stack & Queue
2021. 11. 16. 16:33
Stack
- 입력과 출력이 한 곳(방향)으로 제한
- LIFO(Last In First Out, 후입선출) : 마지막 입력 데이터가 먼저 출력
- 자바에서는 Vector로 구현 (ArrayList성질이 비슷하다)
함수
- push() : Stack에 객체를 저장합니다.
- pop() : Stack의 맨 위에 저장된 객체를 꺼냅니다.
- peek() : Stack의 맨 위에 저장된 객체를 반환합니다. Stack에서 꺼내지는 않습니다. 비었을 때 null을 반환합니다.
- empty() : Stack이 비어있는지 알려줍니다. 있으면 true, 없으면 false를 반환합니다.
- search() : Stack에서 주어진 객체를 찾아서 그 위치를 반환합니다. (배열과는 달리 1부터 시작합니다.)
- clear() : Stack의 모든 객체를 삭제합니다.
- size() : Stack의 크기를 반환합니다.
코드
Stack<Integer> stack = new Stack<>();
stack.push(1); //1입력
stack.push(2); //2입력
stack.push(3); //3입력
System.out.println(stack.size());
stack.pop(); //최상단 객체를 꺼내고 출력
System.out.println(stack.peek());
System.out.println(stack.size());
System.out.println("stack.search(1): " + stack.search(1));
System.out.println("stack.search(2): " + stack.search(2));
System.out.println("stack.remove(1): " + stack.remove(1));
System.out.println("stack.peek(): " + stack.peek());
출력
최상단부터 index값이 1이기 때문에 2의 index는 1, 1의 index는 2입니다.
따라서 remove(1)을 하면 index값이 1인 2가 삭제되므로
최상단은 1이 남게됩니다.
Queue
- 입력과 출력을 한 쪽(front,rear)으로 제한
- FIFO (First In First Out, 선입선출) : 가장 먼저 들어온 데이터가 가장 먼저 나감\
- java에서는 LinkedList로 구현되어 있음.
함수
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
System.out.println(queue.poll()); //1출력
System.out.println(queue.peek()); //2출력
활용
- 버퍼
- 운영체제 스케줄링
- BFS
'CS > Data Structure' 카테고리의 다른 글
[자료구조] 3. Hash Table (0) | 2021.12.07 |
---|---|
[자료구조] 2. 우선순위 큐(Priority Queue) (0) | 2021.12.06 |