leetcode_合并两个有序链表
Posted 明卿册
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode_合并两个有序链表相关的知识,希望对你有一定的参考价值。
不敢确定自己理解的一定正确,
但是可以讲得通。
此题解法重点在于开了一个新的头结点。
class Solution { public: ListNode* mergeTwoLists(ListNode* l1,ListNode* l2) { ListNode* head = new ListNode(0); ListNode* p = head; //p和head指向同一个头结点 while(l1 != NULL && l2 != NULL) { if(l1->val <= l2->val) { p->next = l1; l1 = l1->next; } else { p->next = l2; l2 = l2->next; } p = p->next; } if(l1 != NULL) p->next = l1; if(l2 != NULL) p->next = l2; return head->next; } };
感觉比较难以理解的就是head和p是虽然是两个指针,
但是一开始的时候指向的都是new ListNode(0)开辟出来的那一块内存 //不知道自己这么理解对不对
所以在while循环中虽然没有对head有过什么操作,只是对p进行操作,
但是最后,返回的却是head->next。
以上是关于leetcode_合并两个有序链表的主要内容,如果未能解决你的问题,请参考以下文章