21. Merge Two Sorted Lists(Linked List)
2016-05-29 11:11
423 查看
Title
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.Language C
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) { struct ListNode *head, *h, *p, *q; head = (struct ListNode *)malloc(sizeof(struct ListNode)); head->val = 0; head->next = NULL; h = head; p = l1; q = l2; while(p != NULL && q != NULL){ if(p->val >= q->val) { h->next = q; q = q->next; } else { h->next = p; p = p->next; } h = h->next; // h->next = NULL; } if(p != NULL){ h->next = p; } if(q != NULL){ h->next = q; } return head->next; }
runtime:4ms
思路
将两个已排好序的链表合并为一个新的链表1. 建立新链表的头结点head
2. 依次比较两个已排序链表结点L1、L2,加入新链表L中
3. 若L1结点已经全部合并到L中,但L2有剩余,则直接将L指针h指向L2后续结点;同理L2若还有剩余。
4. 返回head->next.
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- PHP中模拟链表和链表的基本操作示例
- C语言双向链表的表示与实现实例详解
- js链表操作(实例讲解)
- C语言实现输出链表中倒数第k个节点