연결 리스트(linked list)에서 이중 포인터 사용하기
단일 연결리스트에서 삽입과 삭제를 통해 head 포인터의 값을 변화시킬 수 있다.이때, 호출 함수의 포인터변수가 참조하는 객체를 피호출 함수에서 바꾸고자 할 경우 이중 포인터를 사용하면 된다.
1. 연결 리스트 구현시 이중 포인터를 사용하는 이유
단일 연결리스트에서 삽입과 삭제를 통해 head 포인터의 값을 변화시킬 수 있다.
이때, 호출 함수의 포인터변수가 참조하는 객체를 피호출 함수에서 바꾸고자 할 경우 이중 포인터를 사용하면 된다.
t_list **lst
는 t_list 포인터(lst)의 주소를 가리키는 포인터다.t_list **lst
변수가 담고있는 값은t_list *
의 주소t_list **lst
가 담고 있는t_list *
의 주소는 어떤 리스트(lst)의 첫번째 주소즉, *lst는 head의 주소
2. *lst == NULL
과 lst == NULL
의 차이
*lst == NULL
과 lst == NULL
의 차이*lst는 lst의 첫번째 주소, 즉 헤드의 주소를 의미한다. 헤드가 비었다는 건,
*lst는 빈 리스트 라는 뜻!
lst == NULL은 리스트 자체가 존재하지 않는다 뜻!
3. 노드가 NULL인지 검사할 때 적용해보기
리스트의 제일 마지막에 새 노드를 추가하는 함수. 리스트가 비어있는 지 확인을 먼저 해줘야 한다.
lst == 0 이면 함수를 종료시키고,
*lst
== 0 이면 리스트가 비었으니*lst
, 즉 head의 주소에 새 노드의 주소를 넣어주면 된다.
Last updated