[자료구조] 스택, 큐, 해시테이블 사용법

JeongWuk_99·2024년 8월 11일
post-thumbnail

1. 스택

LIFO(Last In First Out) 자료구조

구현 및 사용방법 (배열)

const array = [];

const stackPush = (value) => {
	array.push(value);
}

const stackPop = () => {
	return array.pop();
}

stackPush(1); // [1]
stackPush(2); // [1, 2]
stackPop(); // [1]

2. 큐

FIFO(First In First Out) 자료구조

구현 및 사용방법 (배열, 연결리스트)

1. 배열

class Queue {
	constructor() {
      	this.queue = [];
    	this.front = 0;
      	this.rear = 0;
    }
  
  	enqueue(value) {
    	this.queue[this.rear++] = value;
    }
  
  	dequeue() {
    	const value = this.queue[this.front];
      	delete this.queue[this.front];
      	this.front++;
      	return value;
    }
  
  	peek() {
    	return this.queue[this.front];
    }
  
  	size() {
    	return this.rear - this.front;
    }
}

const queue = new Queue();

queue.enqueue(1); // [1]
queue.enqueue(2); // [1, 2]
queue.peek(); // 1
queue.size(); // 2
queue.dequeue(); // [1] 2

2. 연결리스트

class Node {
	constructor(value) {
    	this.value = value;
      	this.next = null;
    }
}

class Queue {
	constructor() {
    	this.front = null;
      	this.rear = null;
      	this.size = 0;
    }
  
  	enqueue(value) {
    	const newNode = new Node(value);
      	this.size++;
      	if (this.front === null) {
        	this.front = newNode;
          	this.rear = newNode;
        } else {
        	this.rear.next = newNode;
          	this.rear = newNode;
        }
    }
  
  	dequeue() {
    	const value = this.front.value;
      	this.front = this.front.next;
      	if (this.front === null) {
        	this.rear = null;
        }
      	this.size--;
      	return value;
    }
  
  	peek() {
    	return this.front.value;
    }
  
  	size() {
    	return this.size;
    }	
}

3. 해시테이블

키(key)를 해싱하여 나온 index에 값(value)을 저장하는 자료구조

구현 및 사용방법 (Object, Map, Set)

1. Object

const table = {};

table['key1'] = 100;
table['key2'] = "Hello";
console.log(table['key1']); // 100
delete table['key1'];

2. Map (set(), get() 사용)

const table = new Map();

table.set('key1', 100);
table.set('key2', "Hello");
console.log(table.get['key1']); // 100

const object = { a : 1 };

table.set(object, "A1"); // 객체를 key로 사용가능!
console.log(table.get(object)); // "A1"

3. Set (key와 value가 동일)

const table = new Set();

table.add('key1'); // {'key1'}
table.add('key2'); // {'key1', 'key2'}
table.keys(); // {'key1', 'key2'}
table.values(); // {'key1', 'key2'}
profile
꾸준함에 도전하는 중

0개의 댓글