Linked list 구현
```c
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``를 넘기는 경우 타입 에러가 발생하기 때문에, 둘을 착각하는 경우를 방지할 수 있다. 이런게 정적 타입 언어의 장점이라고 할 수 있겠다.
'Algorithm > Theory' 카테고리의 다른 글
멱집합(모든 부분집합)을 비트 벡터를 이용해 구현 (0) | 2020.02.22 |
---|---|
Dynamic programming, 기억하며 풀기 (0) | 2018.09.26 |
선형 시간 안에 중앙값 선택하기 (0) | 2018.05.10 |
max, min 동시에 찾기 / 두 번째로 큰 값 찾기 (0) | 2018.05.06 |
5개의 원소를 7번 비교로 정렬하기 / 6번 비교로 중간값 찾기 (+ 상대자 논증) (0) | 2018.05.03 |