数组
init:数组管理头和数据两部分
free:free管理头必须先遍历free数据
insert、erase:mymcpy,mymmv
expand:realloc
链表
init:管理节点里有头节点也是第-1个节点(不是头地址,是头节点),头节点里不存放数据,只存放链表开始的地址
free:free管理节点前必须先遍历free其他节点
insert:分为insertnode和insertval两步,insertval里当insertnode失败的时候,记住free才创建的准备传入insertnode的节点
erase:在删除节点前,用一个指针记住要删除的节点,然后释放,不然删除以后就找不到这个被删除的节点了,内存也就无法释放
reverse:
1.将第0个节点地址单独存放在一个指针用于遍历所有节点
2.将头节点的next清空,next=null
3.前两部的作用是将头节点与数据断开,重新将数据遍历以头插入的方式插入头节点中
4.inserNode的细化功能可以满足直接对链表插入单个节点
双向链表:
1.多储存一个上一个节点的地址
2.!!!!进行插入和删除时,一定要考虑下一个节点是否为空,增删next的时候,只用对上一个节点进行操作,但prev需要对下一个节点进行操作,如果下一个节点为空,访问会导致segmentation fault!!!