数据结构之“合并两个有序链表”

一、后插法

1、定义:

通过将新节点逐个插入到链表的尾部来创建链表。

2、特点:

(1)每次申请一个新节点,读入相应的数据元素值

(2)为了使新节点能够插入到表尾,需要增加一个尾指针 r 指向链表的尾结点

3、图示:

4、代码实现:

cpp 复制代码
//----------单链表的存储结构----------
typedef struct LNode{
	ElemType data;
	struct LNode *next;
}LNode, *LinkList;
cpp 复制代码
void CreateList_R(LinkList &L, int n)
{
	L = new LNode;
	L->next = NULL;
	r = L;
	for(i=0; i<n; i++)
	{
		p = new LNode;
		cin>>p->data;
		p->next = NULL;
		r->next = p;
		r = p;
	}
}

二、"合并两个有序链表"

1、题目:

2、解题思路:

此题可以先创建一个空链表,然后依次从两个有序链表中选取最小的进行尾插操作进行合并

3、代码实现:

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
    if(list1 == NULL)
        return list2;
    if( list2 == NULL)
        return list1;
    
    struct ListNode* p = (struct ListNode*)malloc(sizeof(struct ListNode));
    p->next = NULL;
    struct ListNode* q = (struct ListNode*)malloc(sizeof(struct ListNode));
    q->next = NULL;
    q = p;
    while(list1 && list2)
    {
        struct ListNode* l1 = list1;
        struct ListNode* l2 = list2;
        if(l1->val >= l2->val)
        {
            list2 = list2->next;
            p->next = l2;
            p = p->next;
        }
        else
        {
            list1 = list1->next;
            p->next  =l1;
            p = p->next;
        }
    }

    if(list1)
        p->next = list1;
    if(list2)
        p->next = list2;
    return q->next;
}

4、测试用例:

微语:You want this life, these choise are necessary.

(最近在看《穿普拉达的女王》,里面的女性太帅了!!)

相关推荐
weixin_457760002 小时前
Python 数据结构
数据结构·windows·python
明洞日记3 小时前
【数据结构手册002】动态数组vector - 连续内存的艺术与科学
开发语言·数据结构·c++
fashion 道格3 小时前
数据结构实战:深入理解队列的链式结构与实现
c语言·数据结构
xxxxxxllllllshi4 小时前
【LeetCode Hot100----14-贪心算法(01-05),包含多种方法,详细思路与代码,让你一篇文章看懂所有!】
java·数据结构·算法·leetcode·贪心算法
铁手飞鹰4 小时前
二叉树(C语言,手撕)
c语言·数据结构·算法·二叉树·深度优先·广度优先
[J] 一坚6 小时前
深入浅出理解冒泡、插入排序和归并、快速排序递归调用过程
c语言·数据结构·算法·排序算法
司铭鸿6 小时前
祖先关系的数学重构:从家谱到算法的思维跃迁
开发语言·数据结构·人工智能·算法·重构·c#·哈希算法
yk0820..6 小时前
测试用例的八大核心要素
数据结构
北京地铁1号线7 小时前
数据结构:堆
java·数据结构·算法
得物技术7 小时前
从数字到版面:得物数据产品里数字格式化的那些事
前端·数据结构·数据分析