一.基础
1.C++定义
2.内存分配
head = (Node*)malloc(sizeof(Node));
分配一个Node*类型的内存,大小为sizeof(Node),即Node结构所占的大小
3.生成一个单向链表
4.生成双向链表
二.链表相关的操作
1.反转一个单向链表并返回新链表的头
2.合并两个单向有序链表
3.逆序合并两个有序单向链表
分析:(1)反转两个单向链表(2)合并两个链表
思考:如何在一个遍历内完成这两个操作(减小时间复杂度和空间复杂度),分别维护两个链表的当前位置,在反转的过程中比较大小,完成合并
和反转一个单向链表类似,只不过是每次比较大小来区分当前的节点temp,本质上并没有什么变化,这个又不需要额外空间复杂度,又不需要遍历多次,效率最高,想想自己之前不思考写的方法,实在是太憨憨了。