实验二 比较总结线性表的几种主要存储结果

来源:互联网 发布:软件中文路径乱码 编辑:程序博客网 时间:2024/06/01 07:50

实验二    比较总结线性表的几种主要存储结果

1、顺序表

顺序表是用一段地址连续的存储单元依次存储线性表的数据元素。所以通常用数组来存储线性表,用数组存放,这意味着我们要确定数组的长度,分配固定长度的数组空间。

存取结构中,随机存取时可以通过找到对应的数组下标找到相应元素,所以,时间复杂度为O(1);而顺序存取则需从第一个元素开始,直到找到对应元素,所以时间复杂度为O(n)

插入和删除操作需要移动元素,时间复杂度为On)。

2、单链表

单链表是用一组任意的存储单元存放线性表的元素,无需事先分配存储空间。

通常情况下,设置一个工作指针p,当指针p指向某结点时执行相应的处理,然后将指针p修改为指向其后继结点,直到p为空为止。因此,其存取操作、插入、删除操作时间复杂度都为O(n),但插入和删除无需移动元素。

3、双链表

双链表是在单链表的每个结点中再设置一个指向其前驱结点的指针域。其他操作与单链表相同,但插入和删除操作有所不同。但由于循环双链表的对称结构,使得在结点p之前或之后执行插入或删除操作都很容易。

4、静态链表

静态链表是用数组来表示单链表,用数组下标来模拟单链表的指针的存储方法,因此,它需要事先分配和固定空间。每个数组元素同样有两个域,一个数据域,另一个是存放下一个元素所在数组下标。

静态链表在插入和删除操作时,只需修改游标,无需移动元素。

5、间接寻址

间接寻址是将数组和指针结合起来的一种方法,可以做到随机存取。在修改线性表中元素之间的逻辑关系时,只需修改相应指针而不需要移动元素,时间复杂度为O(n)

6、总结

①、若线性表需频繁查找却很少进行插入和删除操作,或其操作和数据元素在线性表中的位置密切相关时,宜采用顺序表作为存储结构;若需要频繁进行插入和删除操作,则宜采用链表作为存储结构。

②、当线性表中元素个数变化较大或者未知时,最好使用链表实现;如果事先知道线性表的大致长度,使用顺序表的空间效率会更高。

原创粉丝点击