顺序表

1. 顺序存储方式:

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

顺序存储结构封装三个属性:  

(1) 存储空间的起始位置。  

(2) 线性表的最大存储容量。

(3) 线性表的当前长度。

注意:数组的长度与线性表的当前长度不一样;数组的长度是存放线性表的存储空间的总长度,一般初始化后不变;而线性表的当前长度是线性表中元素的个数,是会变化的。

2. 插入操作

(1)如果插入位置不合理,抛出异常;

(2)如果线性表长度大于等于数组长度,则抛出异常或动态增加数组容量;

(3)从最后一个元素开始向前遍历到第i个位置,分别将他们都向后移动一个位置;  

(4)将要插入的元素填入位置i处;

(5)线性表长度+1。  

3. 删除操作

(1)如果删除位置不合理,抛出异常;

(2)取出删除元素;  

(3)从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一个位置;  

(4)表长-1

4. 线性表顺序存储结构的优缺点:

优点:无须为表示表中元素之间的逻辑关系而额外增加的存储空间;可以快速的存取表中任意位置的元素。  

缺点:插入和删除操作需要移动大量元素;当线性表长度变化较大时,难以确定存储空间的容量;容易造成存储空间的“碎片”。

5. 链式存储结构

把存储数据元素的域称为数据域;把存储直接后继位置的域称为指针域;指针域中存储的信息称为指针或链。这两部分信息组成数据元素称为存储映象,称为结点(Node)。

n个结点链接成一个链表,即为线性表(a1,a2,an)的链式存储结构。因为此链表的每个结点中只包含一个指针域,所以叫做单链表。

我们把链表中第一个结点的存储位置叫做头指针,最后一个结点指针为空(NULL)。

6. 数据长度与线性表长度区别

数组长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的。线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进入。在任意时刻,线性表的长度应该小于等于数组长度。

7. 地址计算

用数组存储顺序表意味着要分配固定长度的数组空间,由于线性表中可以进行插入和删除操作,因此分配的数组空间要大于等于当前线性表的长度。

存储器中的每个存储单元都有自己的编号,这个编号称为地址。

8. 循环链表

循环链表是单链表的变形。循环链表最后一个结点的 link 指针不 为NULL,而是指向了表的前端。为简化操作,在循环链表中往往加入表头结点。

循环链表的特点是:只要知道表中某一结点的地址,就可搜寻到所有其他结点的地址。

9. 存储分配的方式

顺序表的存储空间是静态分配的;链表的存储空间是动态分配的。

存储密度 = 结点数据本身所占的存储量/结点结构所占的存储总量。顺序表的存储密度 = 1;链表的存储密度 < 1

10. 后插法建立单链表

每次将新结点加在链表的表尾;设置一个尾指针 r,总是指向表中最后一个结点,新结点插在它的后面;尾指针 r 初始时置为指向表头结点地址

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值