zoukankan      html  css  js  c++  java
  • 剑指offer——合并两个排序的链表

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

    C++代码:

    struct ListNode {
    	int val;
    	struct ListNode *next;
    	ListNode(int x) :
    			val(x), next(NULL) {
    	}
    };
    
    class Solution {
    public:
        //递归实现
    	ListNode* Merge(ListNode* list1, ListNode* list2)
    	{
    		if (list1 == NULL)return list2;
    
    		if (list2 == NULL)return list1;
    
    		if (list1->val <= list2->val) {
    			list1->next = Merge(list1->next, list2);
    			return list1;
    		}
    		else {
    			list2->next = Merge(list1, list2->next);
    			return list2;
    		}
    	}
        //非递归实现
    	ListNode* Merge2(ListNode* list1, ListNode* list2)
    	{
    		if (list1 == NULL)
    			return list2;
    		if (list2 == NULL)
    			return list1;
    
    		ListNode *mergeHead = NULL;
    		ListNode *current = NULL;
    
    		while (list1 != NULL && list2 != NULL)
    		{
    			if (list1->val <= list2->val)
    			{
    				if (mergeHead == NULL)
    				{
    					mergeHead = current = list1;
    				}
    				else
    				{
    					current->next = list1;
    					current = current->next;
    				}
    				list1 = list1->next;
    			}
    			else 
    			{
    				if (mergeHead == NULL)
    				{
    					mergeHead = current = list2;
    				}
    				else 
    				{
    					current->next = list2;
    					current = current->next;
    				}
    				list2 = list2->next;
    			}
    		}
    		if (list1 == NULL)
    		{
    			current->next = list2;
    		}
    		else 
    		{
    			current->next = list1;
    		}
    		return mergeHead;
    	}
    };
    天上我才必有用,千金散尽还复来!
  • 相关阅读:
    跨域抓取360搜索结果
    css的圣杯布局
    css的双飞翼布局
    C#WebBroswer控件的使用
    使用Chart控件进行实时监控
    GzipStream的简单使用压缩和解压
    poj 1611 The Suspects
    hdu 1856 More is better
    hdu 1232
    UvaOJ 10167
  • 原文地址:https://www.cnblogs.com/lutaishi/p/13436300.html
Copyright © 2011-2022 走看看