首页 > 代码库 > 数据结构-线性表错题集锦
数据结构-线性表错题集锦
4.下列关于线性表说法正确的是( )。
Ⅰ.顺序存储方式只能用于存储线性结构
Ⅱ.取线性表的第i个元素的时间同i的大小有关
Ⅲ.静态链表需要分配较大的连续空间,插入和删除不需要移动元素
Ⅳ.在一个长度为n的有序单链表中插入一个新结点并仍保持有序的时间复杂度为O(n)
Ⅴ.若用单链表来表示队列,则应该选用带尾指针的循环链表
A. Ⅰ、Ⅱ B.Ⅰ、Ⅲ、Ⅳ、Ⅴ C. Ⅳ、Ⅴ D. Ⅲ、Ⅳ、Ⅴ
4. D
顺序存储方式同样适合图和树的存储,如满二叉树的顺序存储,Ⅰ错误。若线性表釆用顺序存储方式,则取其第i个元素的时间与i的大小无关,Ⅱ错误。Ⅲ是静态链表的特有性质。单链表只能顺序查找插入位置,时间复杂度为O(n),若为顺序表,可釆用折半查找,时间复杂度可降至O(log2-------n), Ⅳ正确。队列需要在表头删除元素,表尾插入元素,故釆用带尾指针的循环单链表较为方便,插入和删除的时间复杂度都是O(1),Ⅴ正确。
13.某线性表中最常见的操作是在最后一个元素之后插入一个元素和删除第一个元素,则釆用( )存储方式最省时间。
A.单链表 B.仅有头指针的单循环链表
C.双链表 D.仅有尾指针的单循环链表
13. D
在最后一个元素之后插入元素,需要先找到最后一个元素,故A、B和C的时间复杂度均为O(n)。B因为没有特殊的指针指示头结点或尾结点,故需从某一结点向固定的方向顺序依次搜索插入和删除的位置,时间复杂度也为O(n)。D的两种算法的时间复杂度都是O(1),如下图所示。
14.在双链表中向p所指的结点之前插入一个结点q的操作为( )。
A. p->prior=q;q->next=p;p->prior->next=q;q->prior=p->prior;
B .q->prior=p->prior;p->prior->next=q;q->next=p;p->priop=q->next;
C. q->next=p;p->next=q;q->prior->next=q;q->next=p;
D .p->prior->next=q; q->next=p; q->prior=p->prior;p->prior=q;
14. D
为了在p之前插入结点q,可以将p的前一个结点的next域指向q,将q的next域指向 p,将q的prior域指向p的前一个结点,将p的prior域指向q。仅D满足条件。
15.在双向链表存储结构中,删除p所指的结点时必须修改指针( )。
A .p->llink->rlink=p->rlink; p->rlink->llink=p->llink;
B.p->llink=p->llink->llink;p->llink->rlink=p;
C.p->rlink->llink=p; p->rlink = p->rlink->rlink;
D .p->rlink=p->llink->llink;p->llink=p->rlink->rlink;
15. A
与上一题的分析基本类似,只不过这里是删除一个结点,注意将p的前、后两结点链接起来。
数据结构-线性表错题集锦