顺序表这种在标准库已经实现好了,直接调用 pushback pushfront 这些
o(1)表示不额外开辟空间
src为value继续走,下一个不是value,src值给dst空间,dst++,dst刚好等于2,就是新数组长度。
若从前向后两个数组元素依次比大小 小的放在num1前面,这样num1元素会被覆盖,这种方法行不通,所以从后往前,L1和L2比大小,谁大放L3,L2--,L3--,L2<0了就停止。
另一种情况:
出了循环也没排好序,就把num2剩下数据依次放入num1.
L1 L2不会同时小于零,L2小于0不需要处理所以只需处理一种情况
移动N个数据那么空间复杂度就是N
链表和火车非常像
数组里不能说删除一个空间剩下的都不删,没这种说法,火车中可以把A车厢拿掉,就可以让X 和D连接在一起
链表节点看成车厢,每个节点都可以独立申请,就可以解决顺序表中增容造成空间浪费问题
NOde :节点
多创建一个指针,后期就不会更改原指针
链表前面的节点也是通过一次一次插入,所以最初是情况下我们有个链表但是链表是空链表,头指针就是空,phead是NULL,不能解引用,代码会报错
让phead不指向NULL,指向新节点,此时链表就变成了只有一个结点的链表
形参变了实参没变说明我这里传的是值,需要传地址
不能说传指针就是传地址
pphead不能是NULL这样不能解引用*pphead可以是NULL(第一个节点地址是空,是空链表)所以要断言
将*pphead指针指向newnode就是新的头
若链表为空也行
尾删也要用二级指针,前面插入的新节点可能是头节点,影响到PPhead,头节点删了pphead就成空了,也会影响到我的实参所以用二级指针
释放掉ptail还要让前一个指向的变NULL不然是野指针
prtail和prev都释放掉之后,就不能让prev的NEXT指针指向NULL
如果当前链表只有一个节点,那我就直接把这个节点释放掉,不需要找尾节点以及我们的前驱节点
再尾删就报错为假说明链表为空