유블로그

[알고리즘] 선형구조- 스택, 큐 그리고 후위표기법 본문

알고리즘

[알고리즘] 선형구조- 스택, 큐 그리고 후위표기법

yujeong kang 2020. 7. 30. 14:53

- 선형구조 : 자료 간의 관계가 1:1 관계, 스택과 큐가 선형구조에 해당됨. 비선형구조의 예는 트리.

 

- 스택

  • 후입선출(LIFO, Last-In-First-Out) : 마지막에 삽입한 자료를 가장 먼저 꺼냄
  • 연산 : push(삽입), pop(삭제), isEmpty(비어있는지), peek(top 원소값 보기)
  • 맨 위 원소 top이라고 함
  • Java 는 java.util.Stack 사용

 

- 후위 표기법 : 연산자가 뒤에 있는 수식 표기법

                    ex) (6+((5*(2-8))/2)) -> 6528-*2/+

 

 

- 큐

  • 스택과 마찬가지로 삽입과 삭제의 위치가 제한적인 자료구조
  • 큐의 뒤에서는 삽입만, 큐의 앞에서는 삭제만
  • 선입선출(FIFO, First-In-First-Out) : 먼저 삽입된 원소가 먼저 삭제됨
  • 저장된 원소 중 첫번째 원소를 Front, 마지막 원소를 Rear 이라고 함
  • 삽입 : enQueue, 삭제 : deQueue
  • 큐 생성 : createQueue(), 비어있는지: isEmpty(), 가득 찼는지 : isFull(), front 반환 : Qpeek()
  • Java 는 java.util.Queue 사용 -> 주요 연산 : offer(삽입), poll(삭제)

 

- 우선순위 큐

  • 우선순위를 가진 항목들을 저장하는 큐
  • FIFO 순서가 아니라 우선순위가 높은 순서대로 먼저 나감
  • Java는 java.util.PriorityQueue -> Heap 자료구조(트리)
  • 우선순위를 큰 값으로 설정하면 최대 Heap
  • 우선순위를 작은 값으로 설정하면 최소 Heap