이 글을 읽으시는 분들은 C언어를 아실거라 생각된다.
구태여 C언어라 하지 않아도, '배열' 에 대해서 다뤄본 경험이 있다면,
배열의 한계에 대해 실망을 느낄일이 많으리라 생각된다.
배열은 간단하게 같은 자료형의 많은 데이터를 처리할 수 있다는 장점이 있다.
하지만 가장 큰 단점으로,,, 유동적인 데이터 관리를 하기가 쉽지않다.
그런 이유로, 앞으로 몇가지 자료 구조를 설명하려고 한다.
그 중 첫번째로 링크드 리스트(Linked List) 라는 구조하나를 설명하겠다.
링크드 리스트는 노드 라 하는 하나의 덩어리를 엮고 엮어서(Linked) 줄줄이 소세지(List)처럼 다루는
자료구조이다.
일반적으로 링크드 리스트는
● Single Linked List
● Double Linked List
● Circular Linked List
세 가지로 분류하는데, 이 셋은 각 노드들이 어떻게 연결되있느냐로 구분짓는다.
우선 노드가 어떤식으로 연결이 되는지 보자.(네모난게 노드이다)
단일 링크드 리스트는 단방향으로 각 노드들이 연결되있다.
이중 링크드 리스트는 양방향으로 각 노드들이 연결되있다.
구태여 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 |