数据结构基础知识点(二)

文章介绍了线性表的概念,特点以及在顺序存储结构中的应用。顺序表在存储空间分配上可能存在不灵活性,对于稀疏多项式等场景,链表成为更好的选择。文章还讨论了Java和C语言中指针的差异,并提及了交换元素值的方法。此外,文章提到了平均查找长度和插入操作的时间复杂度,以及内存管理的问题。
摘要由CSDN通过智能技术生成

第二章:线性表(顺序表)

生活中的线性表比如:英文字母表A B C D E F G……Z

数据库存储的数据对象

再比如12星座

基本概念

定义:由n个数据元素(结点)a1,a2,a3....an组成的有限序列。、

2.特点

①.同一线性表中的元素必须具有相同的特性,数据元素间的关系是线性关系。

②.在非空的线性表,有且仅有一个开始结点,它没有直接前趋,而仅有一个直接后继;

③.有且仅有一个终端结点,它没有直接后继,而仅有一个直接前趋;

④.其余的内部结点都有且仅有一个直接前趋,一个直接后继;线性表是一种典型的线性结构。

稀疏多项式使用顺序存储结构存在问题

  1. 存储空间分配不灵活

  1. 运算的空间复杂度高(需要新的数组存储)

所以使用链表存储,如上图(指针)

线性表顺序存储结构要占用一片连续的空间,这样知道了一个元素的存储位置就可以知道其他元素的存储位置

随机存取就是上面所说的知道了一个元素的存储位置就可以知道其他元素的存储位置


由于博主使用的语言主要是java,c语言是大一学的都忘记了,现在来回顾一下,如果有不对的请指出

主函数调用swap方法,a,b是实参,m,n是形参,swap方法里是将m,n的值进行交换,方法调用完毕后,释放,对a实参的值无影响。

p1,p2是指针,存储的是a,b的存储地址,是指向a,b的(感觉有点像Linux中的虚拟分区),

swap方法用了一个 float t来使a,b的值发生了改变(因为t是值而不是指针,所以交换的是a和b的值)

这里t是指针,所以只是m,n的指向对象发生了交换,没有影响到实参

引用对象直接操作实参

C语言与java不一样,C语言int a的时候就在内存开辟了一块空间,java要在赋值了之后或者new了一个新对象之后才开辟空间


平均查找长度(在数学中称为期望值)即查到每个元素所需要的次数相加/元素个数

公式(n+1)/2 时间复杂度为O(n)

一共有n个元素,有n+1个插入点(最后一个)

都可以在原来的空间进行操作,空间复杂度为O(1)

不能自由扩充指的是添加时内存不够大导致溢出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值