21.Merge Two Sorted Lists(法1头部附加节点法2二级指针)

Merge two sorted linked lists and return it as a new list. The new listshould be made by splicing together the nodes of the first two lists.

HideTags

Linked List

#pragma once#include<iostream>using namespace std;struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};//法1:头部添加冗余指针,正常mergeListNode *mergeTwoLists1(ListNode *l1, ListNode *l2) {ListNode* result = new ListNode(-1);//头部附加节点,应返回result->nextListNode* p = result;while (l1&&l2){if (l1->val < l2->val){p->next = new ListNode(l1->val);//注意不能写成是p=new。。。。l1 = l1->next;}else{p->next = new ListNode(l2->val);l2 = l2->next;}p = p->next;}while (l1){p->next= new ListNode(l1->val);l1 = l1->next;p = p->next;}while (l2){p->next = new ListNode(l2->val);l2 = l2->next;p = p->next;}return result->next;}//法2:二级指针ListNode *mergeTwoLists2(ListNode *l1, ListNode *l2){ListNode *result;ListNode **pp = &result;while (l1&&l2){if (l1->val < l2->val){*pp = new ListNode(l1->val);l1 = l1->next;}else{*pp = new ListNode(l2->val);l2 = l2->next;}pp = &(*pp)->next;}while (l1){*pp = new ListNode(l1->val);l1 = l1->next;pp = &(*pp)->next;}while (l2){*pp = new ListNode(l2->val);l2 = l2->next;pp = &(*pp)->next;}return result;}void main(){ListNode* l1 = new ListNode(1);ListNode* l2 = new ListNode(2);ListNode* l3 = new ListNode(1);ListNode* l4 = new ListNode(1);ListNode* result = mergeTwoLists2(l2, l1);while (result){cout << result->val << ' ';result = result->next;}cout << endl;system("pause");}

,莫找借口失败,只找理由成功。(不为失败找理由,要为成功找方法)

21.Merge Two Sorted Lists(法1头部附加节点法2二级指针)

相关文章:

你感兴趣的文章:

标签云: