合并两个有序链表

原创 2016年05月31日 23:38:28

一、问题:合并两个有序链表,合并后的单链表依然有序。

二、分析:

1.有如下两个有序链表str1和str2

 

 

 

 

 

 

 

 

 

2.合并后的新链表的头结点定义为newpHead,采用摘结点法:

 

 

三、代码实现(c语言)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
sListNode* MergeList(sListNode* FirpHead, sListNode* SecpHead)
{
 if(FirpHead == NULL)
 {
  return SecpHead;
 }
 if(SecpHead == NULL)
 {
  return FirpHead;
 }
 sListNode* newpHead = NULL;
 sListNode* firCur = FirpHead, *secCur = SecpHead;
 sListNode* tail = NULL;
 if(firCur->data < secCur->data)
 {
  newpHead = firCur;
  firCur = firCur->next;
 }
 else
 {
  newpHead = secCur;
  secCur = secCur->next;
 }
 tail = newpHead;
 while(firCur != NULL && secCur != NULL)
 {
  if(firCur->data < secCur->data)
  {
   tail->next = firCur;
   firCur = firCur->next;
  }
  else
  {
   tail->next = secCur;
   secCur = secCur->next;
  }
  tail = tail->next;
 }
 if(firCur == NULL)
 {
  tail->next = secCur;
 }
 if(secCur == NULL)
 {
  tail->next = firCur;
 }
 return newpHead;

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

将两个有序链表合并成一个有序链表——搜狐畅游笔试题归来

合并两个有序链表:递归算法:#include using namespace std;/*节点的类定义*/class Node{public: int data; Node * next; Node(...
  • piaojun_pj
  • piaojun_pj
  • 2010年10月17日 15:09
  • 10450

leetcode_效率题解_[python/C++]_21. Merge Two Sorted Lists(合并2个有序链表)

相关题解: leetcode_效率题解_23. Merge k Sorted Lists(合并k个有序链表)题目链接 【题目】 Merge two sorted linked lists and...
  • huangmx1995
  • huangmx1995
  • 2016年11月22日 21:58
  • 530

Java实现两个有序链表的合并

首先写一个节点类,代码如下 public class Node { public int data; public Node next; public Node(int data) { ...
  • u013121385
  • u013121385
  • 2015年11月11日 18:46
  • 913

合并两个有序链表的递归与非递归

1.递归 node * MergeRecursive(node *head1, node *head2) { node *head = NULL; if (head1 == NULL) { r...
  • jeason29
  • jeason29
  • 2015年03月06日 19:19
  • 996

算法题:合并两个有序的链表

题目:已知有两个有序的单链表,其头指针分别为head1和head2,实现将这两个链表合并的函数: Node* ListMerge(Node *head1,Node *head2) ...
  • JXH_123
  • JXH_123
  • 2014年08月04日 16:50
  • 16682

合并两个有序单链表,合并后依旧有序

思路:类似于摘结点法,利用尾指针(tail)把结点摘下来然后链在一起,然后返回头指针 #define _CRT_SECURE_NO_WARNINGS 1 //合并两个有序单链表,合并后依...
  • qq1010234991
  • qq1010234991
  • 2016年04月30日 15:18
  • 135

02-线性结构1 两个有序链表序列的合并 (15分)

本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个递增的整数序列。 函数接口定义:List Merge( List L1, List L2 );其中List结构定义如下:typedef s...
  • wanmeiwushang
  • wanmeiwushang
  • 2016年09月19日 14:11
  • 4002

JavaScript对有序链表的合并

对于将两个有序链表合并为一个有序链表的问题,严蔚敏版的《数据结构》中用到了一种经典的算法。 1.使用两个指针,分别指向两条链表中当前待比较的节点,创建一条新链表,用于存放两条链表中的节点。 2.每...
  • esir82
  • esir82
  • 2017年03月13日 21:27
  • 659

PTA:两个有序链表的合并解题报告

1.题目要求:本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: ...
  • WendyCasr
  • WendyCasr
  • 2016年10月26日 18:47
  • 299

合并两个单向有序(升序)链表

写在博客上只为了方便查看,自己第一次写,欢迎指正/* 合并两个单向有序(升序)链表*/#include #include typedef struct a { int data; st...
  • robot00
  • robot00
  • 2017年02月25日 21:42
  • 334
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:合并两个有序链表
举报原因:
原因补充:

(最多只允许输入30个字)