본문 바로가기

Coding Note

[Data Structure] Linked List

이 글을 읽으시는 분들은 C언어를 아실거라 생각된다.

구태여 C언어라 하지 않아도, '배열' 에 대해서 다뤄본 경험이 있다면,
배열의 한계에 대해 실망을 느낄일이 많으리라 생각된다.

배열은 간단하게 같은 자료형의 많은 데이터를 처리할 수 있다는 장점이 있다.
하지만 가장 큰 단점으로,,,   유동적인 데이터 관리를 하기가 쉽지않다.

그런 이유로, 앞으로 몇가지 자료 구조를 설명하려고 한다.

그 중 첫번째로  링크드 리스트(Linked List)  라는 구조하나를 설명하겠다.

링크드 리스트는 노드 라 하는 하나의 덩어리를 엮고 엮어서(Linked) 줄줄이 소세지(List)처럼 다루는
자료구조이다.

일반적으로 링크드 리스트는 
● Single Linked List
● Double Linked List
● Circular Linked List

세 가지로 분류하는데, 이 셋은 각 노드들이 어떻게 연결되있느냐로 구분짓는다.

우선 노드가 어떤식으로 연결이 되는지 보자.(네모난게 노드이다)

단일 링크드 리스트는 단방향으로 각 노드들이 연결되있다. 


이중 링크드 리스트는 양방향으로 각 노드들이 연결되있다.

 마지막으로 환형 (이중)링크드 리스트는 노드의 처음과 끝이 둥글게 연결되있다.


아, 그리고 그림에서 분홍색은 다음 노드를 가리킬 수 있는 노드의 포인터 타입이다.(그래야 다음 노드를 가리키니)

링크드 리스트의 설명은 이게 전부다. 별거 없지만, 초보가 직접 짜보긴 꽤 복잡하다.

이번 글은 여기서 마치고, 링크드 리스트의 코드가 궁금하다면 여기에 올려놨으니 참고.
 http://alleywildcat.tistory.com/entry/%ED%8F%AC%EC%9D%B8%ED%84%B0-%EC%9D%B4%ED%95%B4%EB%A5%BC-%EC%9C%84%ED%95%9C-Linked-List 







 

'Coding Note' 카테고리의 다른 글

[Data Structure] Stack  (2) 2011.08.04
[Data Structure] Circular double linked list  (0) 2011.08.03
[C++] 포인터 이해를 위한 Linked List  (0) 2011.05.09
[winAPI] 콘솔창 띄우기  (0) 2011.03.09
[C++] 데이터 타입의 변환  (0) 2011.03.07