Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Javascript
- #nodejs#express
- Migratory Birds
- Time Conversion
- Ellectronics Shop
- 알고리즘
- Algorithm
- Drawing Book
- alogrithim
- Breaking the Records
- algorithim
- hackerrank
- javascirpt
- Apple and Orange
- Birthday Chocolate
- 프로그래머스
- Sock Merchant
- Data Structure
- #nodejs#노드js
- 자바스크립트
- 짝수와 홀수
- 자료구조
- nodejs
- 노드
- A Very Big Sum
- Divisible Sum Pairs
- git
- Between Two Sets
- Grading Students
- 생활코딩
Archives
- Today
- Total
ian의 개발일기장
3. 연결리스트(linked list) 본문
1. 개념
연결리스트(linked list)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조이다. 연결리스트는 단일 연결 리스트, 이중 연결 리스트, 원형 연결 리스트 등이 있다. 예를 들어, 한 반에 있는 학생들의 자료를 저장한다면, 학생 1명당 자료를 노드로 만들고, 1번 학생의 자료에 2번학생의 자료가 어디있는지 표시를 해놓는 방식이다.
배열에 비해서, 연결리스트는 노드를 뒤에 연결하거나 중간에 껴놓는 것은 쉽고, 데이터를 추가/삽입 및 삭제가 용이하다. 하지만, 배열은 특정한 자료를 불러내기가 편리한 반면, 연결리스트는 자료 번호가 없고, 연결 관계만 있기 때문에 특정한 노드를 불러내기가 어렵다. 또한 연결리스트는 순차적으로 탐색하지 않으면 특정 위치의 요소에 접근할 수 없어 탐색 속도가 떨어진다.
자료의 처음을 head라 하고, 끝을 tail이라 한다.
2. 구현(단일 연결 리스트)
node와 linkedlist class를 따로 만들었다.
- add - data를 삽입하는 메소드이고, 새로운 node를 만들어서 head가 없다면 head에 맨처음 node를 넣어주고, 아니면 next가 null될때까지 이동해서 node를 추가해주었다. 마지막부분의 next는 null이기 때문이다.
- remove - data를 제거하는 메소드이고, position까지 순차적으로 탐색해서 삭제를 해준다.
- search - position에 있는 노드를 찾는 메소드이다. 순차적으로 탐색해서 찾는다.
'Computer Science > Data Structure' 카테고리의 다른 글
2. 스택(stack) (0) | 2018.10.01 |
---|---|
1. 큐(Queue) (0) | 2018.09.29 |