전체 Code
설명
- 기본 리스트의 삽입은 3가지로 나누어져 있다.
- 헤드 포인터가 NULL 일 때 (공백 리스트 일 때)
- p가 NULL 일 때 (삽입 하려는 위치가 첫 번째 일 때, p는 선행 노드 이므로 p가 NULL이라는 말은 삽입하려는 위치가 첫 번째라는 말이다.)
- 마지막으로 나머지 경우의 수이다.
- 오름 차순 삽입의 핵심은 결국 들어 갈 위치를 찾는 문제 즉 선행 노드를 찾는게 핵심이다.
- 먼저 헤드 포인터가 NULL일 때는 일반 삽입과 같은 경우이다.
- 두 번째 경우인 첫 번째 자리에 들어갈 경우는
while(p)
문 안에서 첫 번째 노드보다 데이터 값이 작은 경우이다. 그렇다면 첫 번째에 들어가야 하므로 p = NULL
로 초기화 시켜준다.
- 마지막 경우는
prv
를 두번 째 while(p)
부터 돌게하여 prv
를 계속 이전 노드를 가리키게 한다.
- 결국
insert_node(phead, p, new_node);
는 각 해당하는 경우에 맞게 동작하게 된다.