[자바스크립트] 배열, 스택, 큐, 연결 리스트, 집합 정리

2021. 1. 7. 17:39프로그래밍-Science/자료구조

1. 배열

 

정의 : 동일한 데이터 타입을 연속으로 저장(다만 JS는 동일하지 않아도 됨)

 

<원소조작>

 

new Array[크기) : 배열 생성

push(): 뒷부분 원소 추가, 스택에서 비롯된 메소드

pop(): 뒷부분 원소 제거, 스택에서 비롯된 메소드

unshift(): 앞부분 원소 추가, 큐에서 비롯된 메소드

shift(): 앞부분 원소 제거, 큐에서 비롯된 메소드

splice(index, 삭제할 원소 갯수): 특정 원소 삭제

배열1.concat(배열2): 배열1+배열2로 새로운 배열 만들기

 

 

<Iterator>

 

배열.every(함수): 함수의 리턴값이 false가 될 때까지 배열 원소들을 순회

배열.true(함수): 함수의 리턴값이 true가 될 때까지 배열 원소들을 순회

map, filter, reduce: 새로운 Array 리턴

 

 

<검색, 정렬>

 

배열.reverse() : 원소 순서 뒤집기

sort() : 원소 정렬, 단 기본적으로 lexicographically한 정렬을 진행하므로 내림차순 및 오름차순은 로직이 필요

        : 문자의 경우도 ASCII값을 기준으로 정렬하므로 별도 로직 필요

배열.indexOf(검색키워드), lastIndexOf(검색키워드): 각각 원소 검색 결과의 첫결과, 마지막 결과를 리턴

 

 

<2차원배열=행렬>

 

A=[ ] 선언후 A[i]= 배열을 할당

A=[ ] -> A[0] = [1,2,3,4] , A[1] = [5,6,7,8]

접근시 A[행][열]로 접근

 

 

<String 변환>

 

배열.join(연결부호): 원소를 모두 하나의 String으로 이어줌, 연결부호를 정의하면 부호가 달림

 

 

 

2. 스택

 

정의: LIFO(후입선출) 원리에 따라 정렬된 컬렉션, 기본적으로 배열을 가지고 조작한다

 

<메소드>

 

push, pop

peek(): 꼭대기 원소 반환, 스택변경은 없다, 마지막 추가 원소 확인용으로 사용

isEmpty(): 스택이 비어있는지 여부 점검

size(), clear()

 

<스택의 구현>

사용시 new Stack으로 인스턴스 생성

 

<응용>

 

보통 진법의 변경 함수에 응용된다

예컨데 10진법을 2진법으로 변환하는 경우, 첫 연산이 뒤에 위치할것이기 때문

 

 

3. 큐

 

정의: FIFO(선입선출)의 원리에 따라 정렬된 컬렉션

 

<구현>

 

스택과 동일하다. 다만, shift, unshft를 이용한다

인스턴스 생성 후 사용 역시 동일하다

 

<응용>

 

우선순위큐(priority queue): 원소가 우선순위에 따라 추가, 삭제된다

 

Circular Queue: 우선순위큐를 이용하여 지속적으로 맨앞 원소를 꺼내 뒤에 넣는 행위를 반복