본문 바로가기

반응형

자료구조&알고리즘/자료구조

(5)
[자료구조] 1. 자료구조 자료구조 - 컴퓨터상 자료를 효율적으로 저장하기 위해 만들어진 논리적인 구조 - 자료구조의 알맞은 선택을 통해 효율적인 알고리즘을 사용할 수 있게 하여 성능을 향상 시킨다 자료구조의 분류 구조 설명 종류 선형구조 데이터를 연속적으로 연결한 자료구조 리스트(선형리스트, 연결리스트), 스택, 큐, 데크 비성현 구조 데이터를 비연속적으로 연결한 자료구조 트리, 그래프
04. 해쉬 테이블 (Hash Table) 1. 해쉬테이블 구조 - 키(key)에 데이터(value)를 저장하는 데이터 구조 - key를 통해 데이터를 받아올 수 있으므로 속도가 획기적으로 빨라짐 - 보통 배열로 미리 Hash Table 사이즈 만큼 생성 후 사용 - 데이터 저장/읽기 속도가 빨라 검색 속도가 빠르다는 장점이 있음 - 일반적으로 저장공간이 더 필요하며 여러 키에 해당하는 주소가 동일 할 경우 충돌을 해결하기 위해 별도 자료구조가 필요한 단점이 있음 키 (key) - 고유한 값으로 해시 함수의 input - 다양한 길이의 값이 될 수 있으며 이 상태로 최종 저장소에 저장이 되면 다양한 길이 만큼의 저장소를 구성해야 하기 때문에 해시 함수로 값을 바꾸어 저장함 해쉬 함수 (Hash Function) - 키(key)를 해시(Hash)로..
03. 연결리스트(Linked List) && 이중연결리스트(Doubly Linked List) 1. 연결리스트 구조 - 배열이 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조인 반면 연결리스트는 떨어진 곳에 존대하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 - 배열이 미리 데이터 공간을 할당해야 하는 반면 연결 리스트는 미리 데이터 공간을 할당하지 않아도 되는 장점이 있음 (단, 연결을 위한 데이터 공간이 필요하므로 저장공간 효율이 높지 않음) - 연결정보를 찾는 시간이 필요하므로 접근 속도가 느림 - 중간 데이터 삭제 시 앞뒤 데이터의 연결을 재구성해야하는 부가적인 작업이 필요함 node 데이터 저장 단위 (데이터값, 포인터) 로 구성 pointer 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 2. 연결리스트 구현 class Node { construct..
02. 스택(Stacks) 1. 스택 구조 - 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책 - FILO(First-In, Last-Out) 또는 LIFO(Last-In, First-Out) - 대표적인 스택의 활용으로 컴퓨터 내부의 프로세스 구조의 함수 동작 방식이 있음 - 구조가 단순해서 구현이 쉬우며 데이터 저장/읽기 속도가 빠름 - 데이터 최대 갯수를 미리 정해야 하므로 저장공간의 낭비가 발생할 수 있음 (미리 최대 갯수 만큼 저장 공간을 확보해야 함) push 데이터를 스택에 넣기 pop 데이터를 스택에서 꺼내기 2-1. 스택 구현 (Array-based) class stack { constructor() { this.items = []; } // 1. 스택에 새로운 element 추가 push(elemen..
01. 큐(Queue) 1. 큐 구조 - 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 - FIFO (First-In, First-Out) 또는 LILO (Last-In, Last-Out) Enqueue 큐에서 데이터를 넣는 기능 Dequeue 큐에서 데이터를 꺼내는 기능 2. 큐 클래스 생성 class Queue { constructor() { this.count = 0; this.lowestCount = 0; this.items = {}; } // 1. queue의 맨 뒤에 데이터를 넣는 method enqueue (element) { this.items[this.count] = element; this.count++; } // 2. queue에서 맨 앞의 데이터를 삭제하는 method dequeue() { if ..