线性表的问题

本文探讨了线性表的存储结构,包括顺序存储和链式存储的优缺点。顺序存储可能导致存储碎片,而链表在插入和删除上更灵活。链表中,最后一个节点可用‘^’表示,而静态链表在没有指针的语言中提供了一种实现方式。循环链表和双向链表通过特殊结构增强了灵活性。同时,文章还解析了线性表长度与数组长度的区别,以及顺序存储结构在查找操作占主导时的应用场景。

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

1. 为什么说顺序存储结构会造成存储空间的“碎片化”?

顺序存储结构的缺点:

插入和删除需要移动大量的对象;存储设备的碎片化;当线性表过大时,很难确定长度。

 

2. 为什么链表最后一个节点指针可以用‘^’表示?

对于空指针值,一般的文档中倾向于用NULL表示,而没有直接说成是0

 

3.  插入,删除操作同样要遍历链表,为什么说链表比顺序存储方便?

数组遍历,除了i++,还需要计算偏移量,来找到下一个对象的地址,再根据这个地址去访问下一个对象,而单向链表做的事情会少一些,只是一个接一个地访问就行了

 

4. 静态链表有什么优点?适用哪些地方?

静态链表的初始长度一般是固定的,在做插入和删除操作时,不需要移动元素,仅需要修改指针,故仍具有链式存储结构的主要优点;

一般在没有指针的语言中,静态链表是数组实现链表的一种方法

 

5.  如果链表不用头节点,插入结点作为链表的首结点,有没有其他方法

只要创建一个结点,指向原来的第一个结点就可以

 

6. 循环链表和双向链表的优点在哪

双向链表由于另外存储了指向链表内容的指针,并且可以会修改相邻的结点,有时候第一个结点可能会被删除,或者在之前添加一个新的结点,这时候就要修改指向首个节点的指针。

有一种可以消除这种特殊情况的方法是在最后一个节点之后,第一个结点之前储存一个永远不会被删除或移动的虚拟结点,形成循环链表。这个虚拟结点之后的结点是真正的第一个结点,这种情况通常可以用这个虚拟结点直接表示这个链表

 

7. 链式存储结构有哪些类型?

线性存储结构有顺序,连接,索引,散列四种;非线性存储结构有树形存储结构,图形存储结构

 

8. 顺序存储结构中,数据长度和线性表长度有什么区别?

数组长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的;

线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的

 

9.双向链表删除元素时操作顺序能不能反了?

只要在改动前把指针成员把指针成员保存在一个临时变量里就可以了,随便先改哪个都无所谓。

 

10. 顺序存储结构现在还有那些应用?

若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值