Post

Linked list 구현

1
2
3
4
5
6
7
8
9
10
typedef struct \_node {
unsigned int data;
struct \_node \*next;
} node;


typedef struct \_l\_list {
node \*head;
node \*tail;
} l\_list;

node 하나만 써서 관리하면 두가지 단점이 있는데,

  1. 항상 head를 잃지 않도록 조심해야한다.
  2. 끝에서 부터 접근하지 못한다. (항상 head에서 부터 접근해야 한다.)

반면 l_list라는 구조체를 하나 만들어 head와 tail을 가리키도록 만들어 주면, 앞뒤로 접근 가능하며 언제나 head를 따라갈 수 있음을 보장할 수 있다.

C 같은 경우, 잘못해서 l_list를 넘겨야 하는 곳에 node를 넘기는 경우 타입 에러가 발생하기 때문에, 둘을 착각하는 경우를 방지할 수 있다. 이런게 정적 타입 언어의 장점이라고 할 수 있겠다.

This post is licensed under CC BY 4.0 by the author.