dbeaver导出表结构和数据_数据结构1|顺序表+链表

数据结构学习笔记1

进度:静态分配顺序表+单链表

参考资料:b站 王道考研+小甲鱼

<

判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注最高项目、的阶数。

推导大O阶方法:

1、 用常数1取代运行时间中的所有加法常数

2、 在修改后的运行次数函数中,只保留最高阶项

3、 如果最高阶项存在且不是1,则去除系数

O(1)

口诀:常对幂指阶

由零个或多个数据元素组成的有限序列

1、 首先它是一个序列,有前后关系

2、 若元素存在多个,第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继

抽象的数据类型就是把数据类型和相关操作捆绑在一起

Operation

InitList(*L)初始化建立一个空的线性表L

ListEmpty(L)判断是否为空表,是返回true,否返回false

ClearList(*L)清空线性表

GetElem(L,i,*e)将线性表L中更多第i个位置元素值返回给e

LocateElem(L,e)在线性表L当中查找与给定值e相等的元素

ListInsert(*L,i,e)在L的第i个位置插入新元素e

ListDelete(*L,i,*e)删除L中第i个位置元素,并用e返回其值

ListLength(L)返回L的元素个数

1、 存储空间的起始位置,数组data,它的存储位置就是线性表存储空间的存储位置

2、 线性表的最大存储容量:数组长度MaxSize

线性表的当前长度:length

5c9da08fa7b77e6ebc2293dc70bf9cac.png

1、 相当于给自定义的数据结构取个昵称…

1159b5e99d4925ad546666fc194d2f57.png

1、 首先进行判断i的范围,注意i>L.length + 1这一句实际上是在检测是否插入的数据能使顺序表是连续的(比如原表在1-5位有数据了,但是在插入时要求在第7位插入,这是不合理的)

2、 难点在于位次序是从1开始的,而数组的存储是从0开始的

1、 感觉没啥好总结的,虽然这个代码写了好一会,但是感觉最大的困难就是上面的图片了

2、 感觉这一次写的代码起以往来说交互性更好了

3、 源码指路github(全部贴上来真的太长啦……)

https://github.com/Sherlock-White/Learning-note/tree/DataStructure

1、 new从自由存储区分配内存,而malloc从堆分配内存。自由存储区能否是堆,取决于operator new的实现细节。

2、 new分配内存成功时,返回的是一个与对象类型严格匹配的指针,符合类型安全性;而malloc分配成功返回void*,需要进行强制类型转换。

3、 new分配内存失败时,会抛出bac­_alloc异常;而malloc会返回NULL

那么对new失败应该使用try-catch的异常机制

4、 new无需指定内存块的大小,编译器会完成的;malloc需要指出(利用sizeof)

5、 new会调用对象的构造函数/析构函数,而malloc不会

6、 new的实现可以基于malloc,反之不可以

7、 new允许被重载,malloc不行

new不能扩容,而malloc可以用realloc原地扩大

https://www.cnblogs.com/ywliao/articles/8116622.html

afaeed09802bb8d4983bd9cad0a42589.png

1、 进行malloc的时候要进行强制类型转化,并且要显式说明分配的内存大小

2、 建议用memset或者是别的方法对脏数据进行处理

3、 下面的博客界面真香啊,javascript马上学qaqq

https://www.cnblogs.com/ybqjymy/p/12365716.html

1f4edab851d34543599c86a09ef1679a.png

1、 一个技巧是可以将结构体命名为两个形式,一个是LNode,另一个是*LinkList,在书写的过程中,前者更强调是一个指针,后者更强调是一个单链表,可以增强代码的可读性

2、 千万别在里面放string,char真的很香

3、 带头结点的单链表思路是在main当中声明一个listPoint*类型的指针L作为头结点,然后对其初始化,接着调用insert函数将元素插入

4、 遍历的核心就是用一个临时的指针p去指向头结点L,用p=p->next实现遍历,难点是边界条件的判定

5、 在释放内存的时候,同样是用一个p去遍历,因为我们要释放的只有malloc的内存,所以从头结点走到NULL的时候应该可以把内存放干净

265708ed59ce45da37c8e9197f1807a9.png

1、 字符串的复制不可以用“=”,可以用strcpy函数,很香很香

2、 单链表注意判断边界情况,永远不要想调用一个NULL的对象

3、 因为写链表的时候顺便把课设的项目做了,所以源码不是很方便贴

1、感觉malloc和new都有适用的场景吧√

2、顺序表的动态分配下次再写了,咕咕咕咕咕

3、感觉自己的代码真的看起来规范很多了qaq

4、回头找个时间得把链表完完整整重新写一遍,最难的地方其实还是插入的判断啦…

5、其实推送本来是昨天码完的,结果快到跑步的点了就咕咕咕咕咕了哈哈哈老鸽子了

6、每天都在努力不被拉爆

7、也不会啦,能拉爆我的几位不是每天能遇到(?)

8、咕咕咕咕咕

9、眠哥的史努比到底什么时候更新?????

c892c54b72ce2936629d0df80a999d77.png

IT双侠的咕咕咕日常

内容/排版:咸哥

特别鸣谢:王道考研/一杯清酒邀明月

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值