[链表]

一.基础

1.C++定义


单向链表的定义

2.内存分配

head = (Node*)malloc(sizeof(Node));

分配一个Node*类型的内存,大小为sizeof(Node),即Node结构所占的大小

3.生成一个单向链表


生成单向链表

4.生成双向链表


生成双向链表

二.链表相关的操作

1.反转一个单向链表并返回新链表的头


反转单向链表

2.合并两个单向有序链表


合并两个单向链表

3.逆序合并两个有序单向链表

分析:(1)反转两个单向链表(2)合并两个链表

思考:如何在一个遍历内完成这两个操作(减小时间复杂度和空间复杂度),分别维护两个链表的当前位置,在反转的过程中比较大小,完成合并


一次遍历反转并且合并两个单向链表

和反转一个单向链表类似,只不过是每次比较大小来区分当前的节点temp,本质上并没有什么变化,这个又不需要额外空间复杂度,又不需要遍历多次,效率最高,想想自己之前不思考写的方法,实在是太憨憨了。

你可能感兴趣的:([链表])