나의 코딩 기록
Home
  • 분류 전체보기 (212)
    • 코딩 기록 (198)
      • 코딩 소스 [HTML & CSS & JS] (89)
      • 자바스크립트 (16)
      • 자바스크립트 알고리즘 (53)
      • Sass [SCSS] (10)
      • 리액트 (9)
      • 타입스크립트 (11)
      • Next.js (4)
      • Node.js (1)
      • 기타 (3)
    • 디자인 기록 (11)
Home
  • 분류 전체보기 (212)
    • 코딩 기록 (198)
      • 코딩 소스 [HTML & CSS & JS] (89)
      • 자바스크립트 (16)
      • 자바스크립트 알고리즘 (53)
      • Sass [SCSS] (10)
      • 리액트 (9)
      • 타입스크립트 (11)
      • Next.js (4)
      • Node.js (1)
      • 기타 (3)
    • 디자인 기록 (11)
블로그 내 검색
Github

나의 코딩 기록

코딩을 기록하는 공간

  • 코딩 기록/자바스크립트

    (JavaScript) 자바스크립트 큐(Queue, FIFO) 자료구조 구현

    2021. 2. 9.

    by. kimyang-Sun

    자바스크립트 (JavaScript)

     

    자바스크립트로 큐(Queue) 기능을 구현해봤습니다.

    큐는 FIFO로 First In First Out, 처음으로 들어온 데이터가 처음으로 나가는 구조입니다.

     

    // 큐 클래스
    class Queue {
    constructor() {
    this._size = 0; // 현재 데이터 수
    this.head; // queue 기준 현재 값
    this.tail; // queue 기준 가장 마지막 값
    }
    // 묶여있는 _size를 밖에서 호출해주기 위해 getter를 사용합니다.
    get size() {
    return this._size;
    }
    // 큐 추가
    enQueue(value) {
    const node = { value };
    if (this._size === 0) {
    this.head = node;
    } else {
    this.tail.next = node;
    }
    this.tail = node;
    this._size++;
    }
    // 큐 제거
    deQueue() {
    if (!this.head) throw new Error('queue not exist..😑'); // 큐가 하나도 없는 상태면 에러 발생
    if (this.head.value === this.tail.value) {
    this.tail = undefined;
    }
    const next = this.head.next;
    this.head = next;
    this._size--;
    }
    // 큐 검색 = index
    search(num) {
    // 큐가 하나도 없거나 해당하는 큐가 없을 경우에 에러 발생
    if (!this.head) {
    throw new Error('queue not exist..😑');
    } else if (num < 0 || num >= this._size) {
    throw new Error('No corresponding queues found..😣');
    }
    let count = 0;
    let current = this.head;
    while (num > count) {
    current = current.next;
    count++;
    }
    return current.value;
    }
    }

     

    주요기능

    • size : 현재 들어가있는 데이터의 수
    • enQueue : 입력된 데이터를 추가하는 함수
    • deQueue : 데이터를 제거하는 함수
    • search : 입력된 숫자에 해당하는 데이터를 반환하는 함수 (배열의 index와 같습니다)

    마지막으로 콘솔로 테스트 해보겠습니다.

     

    const queue = new Queue(); // 클래스 생성
    console.log(queue); // 초기 데이터
    // 데이터 추가
    queue.enQueue('google');
    console.log(queue);
    queue.enQueue('samsung');
    console.log(queue);
    queue.enQueue('lg');
    console.log(queue);
    // index 확인
    console.log(queue.search(0), queue.search(1), queue.search(2));
    // 데이터 제거
    queue.deQueue();
    console.log(queue);
    queue.deQueue();
    console.log(queue);
    queue.deQueue();
    console.log(queue);

     

    초기 데이터

     

    데이터 추가

     

    Index 확인

     

    데이터 제거

     

     

    밑에는 타입스크립트의 큐입니다.

    kimyang-sun.tistory.com/145

     

    (TypeScript) 타입스크립트 큐(Queue, FIFO) 자료구조 구현

    타입스크립트로 큐(Queue) 기능을 구현해봤습니다. 큐는 FIFO로 First In First Out, 처음으로 들어온 데이터가 처음으로 나가는 구조입니다. // 큐 추상화 인터페이스 interface Queue { readonly size: number;..

    kimyang-sun.tistory.com

    profile
    kimyang-Sun

    노력하는 사람

    '코딩 기록 > 자바스크립트' 카테고리의 다른 글

    [자바스크립트] 객체 데이터를 이용한 HTML 엘리먼트 추가  (0) 2023.01.28
    new Date(), toLocaleDateString (현재 날짜,시간 표시하기 / JavaScript)  (0) 2021.03.06
    (JavaScript) 자바스크립트 스택(Stack, LIFO) 자료구조 구현  (0) 2021.02.08
    풍선 터치기 게임 (바닐라 자바스크립트 미니게임)  (0) 2021.02.08
    Mini Clothing Store (바닐라 자바스크립트)  (0) 2021.02.08

    댓글

    관련글

    • [자바스크립트] 객체 데이터를 이용한 HTML 엘리먼트 추가 2023.01.28
    • new Date(), toLocaleDateString (현재 날짜,시간 표시하기 / JavaScript) 2021.03.06
    • (JavaScript) 자바스크립트 스택(Stack, LIFO) 자료구조 구현 2021.02.08
    • 풍선 터치기 게임 (바닐라 자바스크립트 미니게임) 2021.02.08
    맨 위로
전체 글 보기
  • GitHub
  • 코드 저장소
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Kim's Blog

Designed by Nana
블로그 이미지
kimyang-Sun
노력하는 사람

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.