数据结构-链表

1.在具有N个结点的单链表中,
访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。(F)

解析 1).单链表访问前驱结点的时间复杂度为O(N),访问后继结点的时间复杂度为O(1)。

2).增加结点也分为前插和后插两种情况:前插的时间复杂度为O(N),后插的时间复杂度为O(1)。原因如下 :访问(增加)前驱结点需要从头开始顺序访问,而访问(增加)后继结点只需要进行一次间接寻址的操作。

2.对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。√

分析:
题目字眼 “ 顺序存储 ” ,说明内存单元中分配的存储空间是连续的,所 以该线性表为数组形式存储,所以数组访问时,通过下标可随机访问,时间复杂度为O(1),而增加插入时,需要涉及大量元素的移动,所以时间复杂度为O(N)。

3.线性表的逻辑顺序与物理顺序总是一致的。 () 不是。 只有顺序存储情况下才一致,链式存储因为是随机选择物理存储单元,所以不一致。

4.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻。 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存储线性表的各元素,所以相邻元素的物理位置一定相邻。 反之,链表相邻元素间保存的是其存储的位置指针,故链表相邻元素的物理位置才不一定相邻。

5.线性表主要由顺序表示或链式表示,在实际应用中,常以栈、队列、字符串等特殊形式使用,顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性顺序存储结构或顺序映像,顺序存储结构是随机存取的

6.在 n 顺序算法的时间复杂 O(1)操作: 访问第 i 个结点(1≤i≤n)和求第 i 个结点的直接前驱(2≤i≤n)

7.在第 i 个结点后插入一个新结点(1≤i≤n)

8.

要将一个顺序表{a0​,a1​,……,an−1​}中第i个数据元素ai​(0≤i≤n-1)删除,需要移动( )个数据元素。

线性表顺序存储结构删除第i个元素,需将i以后的元素都向前移动一个位置,所以是n-i个元素。

A.

i

B.

n-i-1

C.

n-i

D.

n-i+1

顺序存储的线性表在插入新元素时,需要将第i个元素到第n个元素均向后移动一个单位,插入的新元素成为第i个元素,原来的第i个元素成为第i+1个元素,原来的第n个元素成为第n+1个元素,线性表的长度加1,插入操作的主要工作都放在移动元素上。假设线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位置上插入元素的可能性均等,则平均移动元素的个数为:除非插入在线性表的最后,否则都要移动元素。所以其时间复杂度为O(n)

9.线性表L=(a1, a2, ..., an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的_(n-1)/2__
线性表L=(a1, a2, ..., an)用数组表示,假定删除表中任一元素的概率相同,则插入一个元素平均需要移动元素的_n/2__

10.元素的存储地址 (指第一个字节的地址,即首地址)

11.等概率情况下,在表长为n的顺序表中插入一个元素所需移动的元素平均个数为( )n/2

12.

在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:

在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:
A. 访问第i个结点和求第i个结点的直接前驱
B. 在第i个结点后插入一个新结点
C. 删除第i个结点
D. 将n个结点从小到大排序

答案是A.
假设顺序表L,长度为n,求第i个节点L[i],直接前驱L[i-1],因此为O(1)
答案B需要移动n-i个节点,因此为O(n)
答案C也需要移动n-i个节点
答案D根据排序方法不同最慢O(n^2),最快O(nlogn)

13.

若长度为n的非空线性表采用顺序存储结构,在表的第i个位置插入一个数据元素,i的合法值应该是?

答案:1 ≤ i ≤ n+1,注意,很容认为是0到n,但是题意明确了是表,顺序表!故应该从1开始就可以插入了,n是表尾,在n+1插入就是在表尾新加一个元素

14.在线性表的顺序存储中,元素之间的逻辑关系是通过 1 确定的;在线性表的链式存储中,元素之间的逻辑关系是通过 2 确定的。1,结点的存储位置 ! 2,结点附加的指针域!

15.顺序表查找来说,最好的就是一次就可以找到,时间复杂度是O(1)

最坏是要比较n次,O(n)

如果查找不成功,要进行n+1次比较

由于关键字在任何一个位置的概率都是相同的,所以平均查找次数是n+1/2,时间复杂度还是O(n)

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值