두 개의 연결리스트를 하나의 연결리스트로 합병하는 함수를 구현해보자(단 오름차순으로)

병합 할 때 a와 b 데이터의 크기를 비교해서 새로은 c연결리스트에 노드를 가져와 추가한다. 그리고 다른 노드를 한 칸 씩 전진한다.

그리고 노드 중 하나가 널에 도달하면 다른 노드의 잔여항을 while을 통해 c연결리스트에 연결한다.

합병.PNG

합병2.PNG

Node* Merge_List(Node* head_a, Node* head_b) {
	Node* head_c = NULL;
	while (head_a != NULL && head_b != NULL)
	{
		if (head_a->data < head_b->data) {
			Append_Node(&head_c, Create_Node(head_a->data));
			head_a = head_a->link;
		}
		else
		{
			Append_Node(&head_c, Create_Node(head_b->data));
			head_b = head_b->link;
		}
	}
	while (head_a != NULL)
	{
		Append_Node(&head_c, Create_Node(head_a->data));
		head_a = head_a->link;
	}
	while (head_b != NULL)
	{
		Append_Node(&head_c, Create_Node(head_b->data));
		head_b = head_b->link;
	}
	return head_c;
}

결과

결과.PNG

과제에 대한 고찰

이번 과제는 오름차순으로 노드를 추가하는 것이다. 예전에 Ploy_add 함수를 만들 때 처럼 서로 값을 비교해서 크면 넣어주는 식으로 진행하였더니 어렵지 않았다. 특히 잔여항을 넣어주는 부분만 조심만 했다면 크게 어렵지 않은 과제 였던거 같다.