数据结构学习笔记(二)之 数组与链表

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组

        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!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值