数据结构 链表合并

问题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

思路:1.从两个链表的当前节点开始,比较两个当前节点值的大小

    2.将上述步骤中得到的节点放入一个结果链表中,并将该链表后移一位,得到当前节点

    3.重复上述步骤,直至两个当前节点都到各自链表的底部

如图所示:


代码实现:

public ListNode Merge(ListNode list1,ListNode list2) {
		//对头指针的特殊考虑
		if(list1==null&&list2==null) return null;
		if(list1==null) return list2;
		if(list2==null) return list1;
		ListNode result = new ListNode(1); //结果链表
		ListNode currentList1 = list1;	   //list1当前节点
		ListNode currentList2 = list2;	   //list2当前节点
		ListNode resultCurrent = result;   //结果链表当前节点
		ListNode current = null;
		while(currentList1!=null||currentList2!=null){
			if((currentList1!=null)&&(currentList2==null||currentList1.val<currentList2.val)){
				current = currentList1;
				currentList1 = currentList1.next;
			}else{
				current = currentList2;
				currentList2 = currentList2.next;
			}
			resultCurrent.next = current;
			resultCurrent = current;
			resultCurrent.next = null;
		}
        return result.next;
    }


猜你喜欢

转载自blog.csdn.net/VP_19951105/article/details/70216221
今日推荐