数据结构线性表-顺序表学习笔记2.4 2.5

文章详细介绍了线性表的顺序存储结构,包括使用数组实现,如何通过结构类型定义线性表,以及动态分配空间的方法。讨论了插入、删除和查找操作的时间复杂度,并提到了C和C++中的内存管理,如malloc和new、free和delete的使用。此外,还阐述了值传递、地址传递和引用传递在参数调用中的区别。
摘要由CSDN通过智能技术生成

线性表的顺序存储

以物理位置相邻表示逻辑元素相邻

任意元素均可随机存取

顺序表定义成上方图片的样子

线性表大小为100

如何存储这个线性表,则需要一个数组,一个整数来存储线性表元素的个数

因为有两部分,所以需要线性表定义成为结构类型,顺序表类型

eg:

类c语言的补充

elemtype 代表元素类型 可换成char/float

或者定义一个类型elemtype

typedef char( int) elemtype

一个元素包含两个部分,就可以定义成结构类型

第二个是动态分配空间

data【0】就是数组的首地址,或者基地址

接受:sqlist L;

sqlist这种类型定义一个变量L

L有两个成员 L.data L.length

*data是指针类型的

数据结构和数组上对于少1

如果定义L是指针型的话可以用 ——>,就不需要用.了

如何做到:就L前加个*就可以。成员引用方式

插入,删除,查找用法重要

线性表的初始化

用的&

销毁和清空,求长度和判断为空应该书上都没有

常量阶 时间复杂度1

locateElem查找

ASL

插入insert

第i个元素位置上插入e

下标为i-1

时间复杂度为O(n)

有n个元素,当是可以有n+1个插入机会

n为线性表元素个数

顺序表的删除listdelete

顺序表要求连续空间,前驱和后继,不能有空的存在

线性表L上删除第i个位置的元素

平均时间复杂度为O(n)

用的是C语言 malloc,如果c++就可以用new

同理:free c++用delete

maxsize可能是100/200等等根据需要

从内存中找到800个字节

怎么分配就看elemtype类型了

带有*也是因为指针,data是指针类型的

elemtype指的是指向elemtype这种类型的指针

c++的

int *p1=new int;

new int 表示从内存当中动态的分配一块空间,空间多大呢?——放一个int型的

new出来的空间,我们也是得到这快空间的地址,所以必须赋值给指针变量*p1

int *p1=new int(10);

给这快空间赋初值10。 p1这个指针变量指向这个新很配的空间的

new获得一块空间,delete释放空间。

c++的参数传递

值传递:传递的参数的值,实参和形参各用各的空间。

a:3——传递给m:3

b:5—— n:5

m和n交换

m:5 n:3

当时当调用函数实行完毕,释放没有了

返回到主函数时ab的值不改变。

传地址: 实参和形参的地址一样,共用一块地址。

指针变量做参数:可(不)影响实参

1、交换前对应的a:3 b:5

交换后

a:5,b:3

返回后a,b的值发生变化了。

调用完毕后

m、n释放,对于a,b没有影响。

数组首元素地址 传递

引用传递:

i和j共用同一个空间

i变了,j也会变。

对形参的操作相当于对实参的操作。通过引用变成操作实参。

引用类型做参数的三点说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值