Stack Queue

1. 스택

Last In First Out으로 최근에 추가한 항목이 가장 먼저 제거되는 데이터 방식


1) 함수

  • pop() : 스택에서 가장 위에 있는 항목을 제거
  • push() : item하나를 스택의 가장 윗 부분에 추가
  • peek() : 스택의 가장 위에있는 항목을 제거없이 값만 반환
  • isEmpty() : 스택이 비었는지 검사

2) 사용 예

  • 재귀 알고리즘
  • 웹 방문기록
  • 실행 취소

연결 list를 이용한 코드 예(C 언어)



2. 큐

First In First Out으로 가장 먼저 추가한 데이터가 먼저 제거되는 데이터 방식


1) 함수

  • add(inQueue)() : 큐의 끝 부분에 데이터 추가
  • remove(deQueue)() :큐의 첫번째 항목을 제거
  • peek() : 큐의 가장 위에있는 항목을 제거없이 값만 반환
  • isEmpty() : 큐가 비었는지 검사

2) 사용 예

  • 프로세스 관리
  • 너비 우선 탐색(BFS)
  • 캐시 구현
  • 우선순위 큐

연결 list를 이용한 코드 예(C 언어)



3. 우선순위 큐 ( Priority Queue )

우선순위의 개념을 큐에 도입한 자료 구조.

일반적인 큐는 FIFO의 규칙으로 먼저 들어온것이 나가게 되나 우선순위 큐는 우선순위가 높은 순서대로 나가게 된다.


1) 구현 방법

  • 배열
  • 리스트
  • 힙(Heap)
표현 방법삽 입삭 제
순서 없는 배열 / 리스트O(1)O(n)
정렬된 배열 / 리스트O(n)O(1)
O(logn)O(logn)



4. 덱 ( Deque )

Double-ended queue의 약자로 양 끝에서만 자료를 넣고 뺄 수 있는 자료구조이다.

일반 큐와의 차이점은 push,pop 할 수 있는 방향이 양방향이라는 것이 차이점이다.

Related Posts

Spring boot와 EK스택 연결하기

Spring boot와 EK스택 연결하기

현재 진행하고있는 spring boot 프로젝트에 쿼리 통계를 위해 ElasticSearch와 Kibana를 도입하기로 했고 이에 맞게 로깅방법이나 세팅 방법을 기록하기 위해 글을 작성하게 됬다. diagram 구성은 다음과 같은데 서버로 EC2 프리티어를 사용하고 있어 사양이 안좋기 때문에 서버 내부에 logstash없이 filebeat를 이용하여 로그를 전송하기로 했다. ELK스택으로는 Elastic Cloud 프리티어를 이용해 빠르게 구축하는 것을 테스트해볼 생각이다....

Read More
PointRee 프로젝트 1 - 설계와 환경 구성

PointRee 프로젝트 1 - 설계와 환경 구성

웹 전반적인 흐름도 익히고 프레임워크들도 공부하기 위해 토이 프로젝트로 간단한 고객 정보를 관리하고 포인트 적립을 하는 웹을 구현해보고자 한다. 사용할 스택으로는 크게 React와 Spring Boot를 사용해서 개발해보려고 한다. React는 사용을 해본적이 있고 JS에 관심이 많기 때문에 선택을 하였고, 백을 JS 프레임워크가 아닌 굳이 Spring Boot를 사용하는 이유는 현재 졸업작품에서도 사용을 하고 있고 현재 흥미가 많은 프레임워크이기 때문에 더많은 공부를 위해 사용하기로 했다....

Read More
Optional

Optional

  • Java
  • 2021년 12월 8일

Java 8에 새로 생긴 인터페이스로 라이브러리 메서드가 반환할 결과값이 없음을 명백하게 표현할 필요가 있는 곳에서 제한적으로 사용할 수 있는 메커니즘을 제공하기 위해 새로 생겨났다. Java api doc의 API 노트를 보면 다음과 같이 설명하고 있다. Optional은 주로 결과 없음을 나타낼 필요성이 명확하고 null을 사용하면 오류가 발생할 수 있는 메소드 반환 유형으로 사용하도록 고안되었다....

Read More