1. 为什么说顺序存储结构会造成存储空间的“碎片化”?
顺序存储结构的缺点:
插入和删除需要移动大量的对象;存储设备的碎片化;当线性表过大时,很难确定长度。
2. 为什么链表最后一个节点指针可以用‘^’表示?
对于空指针值,一般的文档中倾向于用NULL表示,而没有直接说成是0
3. 插入,删除操作同样要遍历链表,为什么说链表比顺序存储方便?
数组遍历,除了i++,还需要计算偏移量,来找到下一个对象的地址,再根据这个地址去访问下一个对象,而单向链表做的事情会少一些,只是一个接一个地访问就行了
4. 静态链表有什么优点?适用哪些地方?
静态链表的初始长度一般是固定的,在做插入和删除操作时,不需要移动元素,仅需要修改指针,故仍具有链式存储结构的主要优点;
一般在没有指针的语言中,静态链表是数组实现链表的一种方法
5. 如果链表不用头节点,插入结点作为链表的首结点,有没有其他方法
只要创建一个结点,指向原来的第一个结点就可以
6. 循环链表和双向链表的优点在哪
双向链表由于另外存储了指向链表内容的指针,并且可以会修改相邻的结点,有时候第一个结点可能会被删除,或者在之前添加一个新的结点,这时候就要修改指向首个节点的指针。
有一种可以消除这种特殊情况的方法是在最后一个节点之后,第一个结点之前储存一个永远不会被删除或移动的虚拟结点,形成循环链表。这个虚拟结点之后的结点是真正的第一个结点,这种情况通常可以用这个虚拟结点直接表示这个链表
7. 链式存储结构有哪些类型?
线性存储结构有顺序,连接,索引,散列四种;非线性存储结构有树形存储结构,图形存储结构
8. 顺序存储结构中,数据长度和线性表长度有什么区别?
数组长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的;
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的
9.双向链表删除元素时操作顺序能不能反了?
只要在改动前把指针成员把指针成员保存在一个临时变量里就可以了,随便先改哪个都无所谓。
10. 顺序存储结构现在还有那些应用?
若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构