单链表的归并算法思路总结

本文总结了如何将两个递增有序的单链表归并为一个按元素递减次序排列的单链表。通过分析归并思路,强调在转换为代码时要注意结点的暂存,以防出现死循环。文章鼓励读者亲自实践以深入理解这一过程。
摘要由CSDN通过智能技术生成

刚在练习的时候需要将两个递增有序的单链表进行归并处理,之前碰到这种问题,心里总是有些害怕,害怕自己不能完全考虑到所有的情况,怕自己想不明白里面的流程,怕自己做不到。。。

但是,我慢慢理解并深以为然的是:越动手去做,越得心应手。

好像应了那句,越努力越幸运。

很多情况下,生活中的其他场景里,我能够很自然,自信的去思考,去行动,但是对应到程序世界里来,就有些畏手畏脚。明明背后的逻辑,需要的领域知识,自己全都能够灵活应用,却偏偏不敢动手写代码。

我不知道你是不是曾经或者现在也有这样的困惑。这花费了我许久的时间去想通。

OK,我们还是主要聊这段代码如何从自然的归并思路平滑转换到代码中。

先看题目:

假设两个递增有序的线性表,均以单链表形式存储。将两个单链表归并为按元素递减次序排列的单链表,并要求:利用原来的结点存储。

#include <iostream>
#include <ctime>
#include <vector>
#include <algorithm>

using namespace std;
typedef int ElemType;
#define MAX 100

typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node, *List;
// 生成一个链表,数值随机生成
// 返回指向生成链表的头结点指针
List generateList(int n)
{
    srand(n);
    // 定义头结点
    List Head = (List)malloc(sizeof(Node));
    Head->next = NULL;
    Node *temp = Head; //使用temp拿着L的位置,为的是不改变L的数值
    // 先通过vector建立一个递增有序的数列
    vector<int> ins;
    
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值