알고리즘_queue(선형)

2022. 10. 4. 17:42·알고리즘/구현

오늘은

실제 자바 내장 queue를 직접 코딩으로 구현해 보는 시간을 갖겠습니다.


 

import java.util.Arrays;
import java.util.Queue;

public class MyQueue {
   private int[] queue;
   private int capacity;
   private int front; // 꺼내올 요소의 인덱스
   private int rear; // 마지막 추가 요소의 인덱스
   private int size; // 요소 개수

   public static void main(String[] args) {
      MyQueue Q = new MyQueue();
      Q.enqueue(1);
      Q.enqueue(2);
      Q.enqueue(3);
      Q.enqueue(4);
      Q.enqueue(5);
      Q.dequeue();
      Q.dequeue();
      Q.dequeue();
      Q.dequeue();
      Q.dequeue();
      System.out.println("사이즈 " + Q.size());
      System.out.println("peek(가장 첫번째 값) " + Q.peek());
      System.out.println("리어(인덱스) " + Q.rear());
      System.out.println("isEmpty: " + Q.isEmpty());
      System.out.println("isFull: " + Q.isFull());

   }

   public MyQueue() {
      this.queue = new int[5];
      this.capacity = this.queue.length;
      this.front = -1;
      this.rear = -1;
      this.size = 0;
   }

   public void enqueue(int data) { // 큐에 값을 입력하는 함수
      if (rear != queue.length) {
         queue[++rear] = data;
         size++;
      }
   }

   public int rear() { // 현재 rear 값을 가져오는 함수
      return rear;
   }

   public int peek() { // 가장 첫번째 값을 반환하는 함수
      return queue[front + 1];
   }

   public boolean isEmpty() { // 큐가 비어있는지 확인하는 함수
      return size == 0;
   }

   public int size() { // 큐에 현재 들어있는 값의 개수를 확인하는 함수
      return size;
   }

   public void dequeue() { // 큐의 첫번째 값을 없애는 함수
      if (!isEmpty()) {
         front = (front + 1) % size;
         size--;
         System.out.println("프론트 값: " + front);
      }
   }

   public boolean isFull() {
      return size == capacity;
   }
}

해당 코드는 2022년 10월 2일 스터디 모임을 통해 스터디원들과 함께 구현한 코드입니다.


'알고리즘 > 구현' 카테고리의 다른 글

알고리즘_MinHeap(최소힙)  (1) 2022.11.10
알고리즘_ArrayList  (0) 2022.11.10
알고리즘_LinkedList(리스트)  (0) 2022.11.10
알고리즘_이진트리  (0) 2022.10.20
'알고리즘/구현' 카테고리의 다른 글
  • 알고리즘_MinHeap(최소힙)
  • 알고리즘_ArrayList
  • 알고리즘_LinkedList(리스트)
  • 알고리즘_이진트리
뚤떡이
뚤떡이
프로그래밍을 알아가며 저와 함께 성장하는 블로그 입니다
  • 뚤떡이
    뚤떡이의 발개벗긴개발
    뚤떡이
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • Docker (2)
      • 자바 (29)
        • start (10)
        • calcu (4)
        • process (7)
      • 플러터 (1)
      • 알고리즘 (12)
        • 개념 (2)
        • 구현 (5)
        • 백준 (0)
        • 프로그래머스 (5)
      • 이클립스 (4)
        • 초기설정 (4)
      • SQL (5)
      • IT 잡동사니 (10)
      • 개발 관련 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    요구사항 정의서
    #번역
    #python #개발일지 #번역 #메모리최적화 #websocket #redis #비동기프로그래밍
    GLPI
    개발일지 #프로젝트후기 #gpt4 #번역 #자동화 #python #electron
    윈도우 크롬 원격
    #프로젝트
    MAC 크롬 원격
    #apachesuperset #시놀로지 #db2 #데이터시각화 #기술블로그
    #electron
    시놀로지
    #개발일지
    synology
    #자동화
    크롬 원격 데스크톱
    #python
    스팸메일 #메일보안 #gophish #it보안 #오픈소스
    크롬 원격
    IT자산관리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
뚤떡이
알고리즘_queue(선형)
상단으로

티스토리툴바