-
타입스크립트 (TypeScript) 타입스크립트로 큐(Queue) 기능을 구현해봤습니다.
큐는 FIFO로 First In First Out, 처음으로 들어온 데이터가 처음으로 나가는 구조입니다.
// 큐 추상화 인터페이스interface Queue {readonly size: number;enQueue(value: string): void;deQueue(): void;search(num: number): string;}// 추가될 노드 타입 생성type QueueNode = {value: string;next?: QueueNode;}// 큐 클래스class QueueImpl implements Queue {private _size: number = 0; // _size 값을 외부에서 접근하지 못하게 묶습니다.private head?: QueueNode; // head는 노드 인터페이스 타입private tail?: QueueNode; // tail도 노드 인터페이스 타입// 묶여있는 _size를 밖에서 호출해주기 위해 getter를 사용합니다.get size() {return this._size;}// 큐 추가enQueue(value: string) {const node: QueueNode = { 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--;}// 큐 검색 = indexsearch(num: number): string {// 큐가 하나도 없거나 해당하는 큐가 없을 경우에 에러 발생if (!this.head) throw new Error('queue not exist..😑');if (num < 0 || num >= this._size) {throw new Error('No corresponding stacks found..😣');}let count: number = 0;let current: QueueNode = this.head;while (count < num) {current = current.next!;count++;}return current.value;}}주요기능
- size : 현재 들어가있는 데이터의 수
- enQueue : 입력된 데이터를 추가하는 함수
- deQueue : 데이터를 제거하는 함수
- search : 입력된 숫자에 해당하는 데이터를 반환하는 함수 (배열의 index와 같습니다)
마지막으로 콘솔로 테스트 해보겠습니다.
const queue = new QueueImpl(); // 클래스 생성console.log(queue); // 초기 데이터// 데이터 추가queue.enQueue('samsung');console.log(queue);queue.enQueue('apple');console.log(queue);queue.enQueue('google');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 확인 데이터 제거 밑에는 자바스크립트의 큐입니다.
(JavaScript) 자바스크립트 큐(Queue, FIFO) 자료구조 구현
자바스크립트로 큐(Queue) 기능을 구현해봤습니다. 큐는 FIFO로 First In First Out, 처음으로 들어온 데이터가 처음으로 나가는 구조입니다. // 큐 클래스 class Queue { constructor() { this._size = 0; // 현..
kimyang-sun.tistory.com
kimyang-Sun노력하는 사람
'코딩 기록 > 타입스크립트' 카테고리의 다른 글
(TypeScript) MEMO! (0) 2021.03.04 (TypeScript) 타입스크립트 스택(Stack, LIFO) 자료구조 구현 (2) 2021.03.04 (TypeScript) 타입스크립트 interface와 Type Alias(타입 별칭) (0) 2021.03.04 (TypeScript) 타입스크립트 inference & assertion (타입 추론 & 타입 단언) (0) 2021.03.04 (TypeScript) 타입스크립트 Intersection Type(인터섹션 타입) (0) 2021.03.04 댓글