鱼C论坛

 找回密码
 立即注册
查看: 1138|回复: 0

[技术交流] C++刷剑指offer(面试题25. 合并两个排序的链表)【链表】

[复制链接]
发表于 2020-3-29 12:27:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 糖逗 于 2020-5-8 17:31 编辑

题目描述:
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:

0 <= 链表长度 <= 1000

#include <iostream>


using namespace std;

struct ListNode{
        int value;
        ListNode* next;
        ListNode(int x): value(x), next(NULL){
                
        }
};

void printList(ListNode* input){
        ListNode* temp = input;
        while(temp -> next){
                temp = temp -> next;
                cout << temp -> value << " ";        
        }
        cout << endl;
        cout << "-------------" << endl;
        
}


ListNode* solution(ListNode* input1, ListNode* input2){
        ListNode* temp1 = input1 -> next;
        ListNode* temp2 = input2 -> next;
        ListNode* temp = new ListNode(0);
        ListNode* res = temp;
        while(temp1 != NULL || temp2 != NULL){
                if(temp1 == NULL){
                        temp -> next = temp2;
                        break;
                }
                if(temp2 == NULL){
                        temp -> next = temp1;
                        break;
                }
                if(temp1 -> value <=  temp2 -> value){
                        temp -> next = temp1;
                        temp = temp -> next;
                        temp1 = temp1 -> next;
                        continue;
                }
                if(temp1 -> value > temp2 -> value){
                        temp -> next = temp2;
                        temp = temp -> next;
                        temp2 = temp2 -> next;
                        continue;
                }

                
        }
        return res;
        
}


int main(void){
        ListNode* input1 = new ListNode(0);
        ListNode* temp1 = input1;
        cout << "please send numbers for the first singleList:" << endl;
        int number1;
        while(cin >> number1){
                ListNode* node = new ListNode(number1);
                temp1 -> next = node;
                temp1 = node;
        }
        printList(input1);
        cin.clear();
        
        ListNode* input2 = new ListNode(0);
        ListNode* temp2 = input2;
        cout << "please send numbers for the second singleList:" << endl;
        int number2;
        while(cin >> number2){
                ListNode* node = new ListNode(number2);
                temp2 -> next = node;
                temp2 = node;
        }
        printList(input2);
        cin.clear();
        cout << "start!" << endl;
        
        
        ListNode* res = solution(input1, input2);
        cout << "finish!" << endl;
        printList(res);
        
        
        return 0;
}

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 17:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表