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
- C언어
- 리눅스
- JungOl
- 반복문
- 오늘도 우라라
- mariaDB
- publish
- ubuntu
- Subscribe
- 오늘도 우라라 펫 공략
- 우분투
- C++
- 마리아 DB
- 오늘도 우라라 공략
- install opencv-4.4.0 on ubuntu 22.04
- Linux
- MSG
- 토픽
- 오늘도 우라라 펫
- 기초
- mysql
- while
- 그랑사가
- 데이터 베이스
- 프로그래밍
- topic
- 등차수열
- LeetCode
- ros
- 환경설정
Archives
- Today
- Total
하루의 쉼터
[Algorithm] Linked List_연결리스트 본문
반응형
연결리스트
1) 정적배열 |
- 크기 고정 - 메모리가 낭비된다 - 변경에 대처가 어렵다, 유연성이 떨어진다 |
2) 동적 배열 |
장점 : 실행시간에 heap메모리에 배열을 할당 단점 : 성능 저하 !! 동적으로 증가, 감소는 가능하지만 구현이 어렵고 성능 저하 |
3) 포인터 배열 |
- 동적인 자료구조 --> 대략의 크기가 정해진 경우 ex) 지뢰찾기 --> 처음설정된 이후에 크기가 변하지 않는 경우 변하더라도 크기가 예측이 가능한 경우 사용 --> 가장 많이 사용되는 대표적인 자료구조 단점 : 데이타의 크기가 예측이 불가능한 경우 사용하기 어려움 |
4) 연결리스트 (linked list) |
- 동적으로 데이타를 1씩 생성해나가는 선형자료구조 !! - 데이타와 데이타를 링크를 통해 순위,순서를 나타낸다 !! - 노드(node) : 데이타와 링크를 갖는 하나의 블럭 - 링크(link) : 다음 노드를 가르키는 포인터 단점 : 메모리가 연속 되지 않아 탐색 속도 저하 |
* 연결리스트를 사용해야하는 경우
1) 데이타의 규모가 예측이 불가능한 경우 --> 1~무한대 : 시스템이 허용하는 한계 !!
ex) editor프로그램 작성
2) 중간에서 삽입,삭제가 빈번하게 일어나는 경우
ex) 운영체제의 프로세스관리
연결리스트 구현 방법
1) 단일 연결리스트 : 다음 노드를가르키는 포인터 1개 존재
[ 10 ] [ 20 ] [ 30 ]-->데이터
[ &20 ]-->[ &30 ]-->[ ]--> 링크 : 다음 데이타의 주소값
- 방향성 순방향--> 한쪽방향으로만 이동가능
2) 이중 연결리스트 : 다음노드의 포인터, 이전 노드의 포인터 !!
[ 10 ] [ 20 ] [ 30 ]-->데이터
[ &20 ]-->[ &30 ]-->[ ]--> 링크 : 다음 데이타의 주소값
[NULL ]<--[ &10 ]<--[ &20 ]
코드 -> GitHub
github.com/Anchangun/Library/tree/main/C/List
반응형
'프로그래밍 > C언어' 카테고리의 다른 글
[Linux] 동적 할당 크기(SIZE) 구하기 (2) | 2021.02.02 |
---|---|
[Algorithm] Stack_스택_LIFO (0) | 2020.12.09 |
[Algorithm] 동적메모리(Heap) (0) | 2020.12.08 |
[비교]Call by Value와 Call by Address,Reference 차이 (값 전달과 주소전달 차이) (0) | 2019.01.14 |
[비교]배열포인터와 포인터배열 (0) | 2019.01.11 |
Comments