数组
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!!!
本文深入探讨了数组和链表这两种数据结构的初始化、释放、插入、删除及扩展等操作。对于数组,重点关注了mymcpy和mymmv函数在插入和删除中的应用,以及realloc在扩展时的角色。链表部分,讲解了单链表和双向链表的管理,包括头节点处理、插入删除的细节以及反转链表的过程。特别强调了在操作链表时对空节点的处理和内存释放的重要性。

被折叠的 条评论
为什么被折叠?



