选择题
-
循环链表不是线性表(A)
A.正确
B.错误
解析:
线性结构:线性表(顺序表,链表),数组,栈,队列,循环队列
非线性结构:树,图,对维数组
逻辑结构:线性结构,非线性结构,集合
存储结构:顺序存储,链表存储,索引存储和散列存储 -
下面的描述错误的是(C)
A.栈只能在一端进行入栈和出栈操作
B.队列在一端进行入队操作,另一端进行出队操作
C.栈和队列都是“先进后出”
D.链表的各个元素在内存中的保持位置可以是不连续的 -
在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行(B)
A.s->next=p->next; p->next=s
B.s->next=p;q->next=s;
C.p->next=s->next; s->next=p
D.p->next=s; s->next=q -
下面关于线性表的叙述中,错误的是哪一个?(B)
A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。 -
在有n个节点的二叉链表中,值为空的链域的个数为(B)
A.n-1
B.n+1
C.2n-1
D.2n+1 -
如果最常用的操作是取第i个结点及其前驱,则采用(D)存储方式最节省时间。
A.单链表
B.双链表
C.单循环链表
D.顺序表
解析:容易错误选择双链表,是因为直观的看到“前驱”。实际题目说的是“取”前驱,应该理解为读前驱,这是顺序表的优势所在,时间复杂度为O(1);当进行插入或删除操作时由于顺序表可能需要移动的元素较多,不如双链表方便。 -
适用于压缩存储稀疏矩阵的两种存储结构是 。(A)
A.三元组表和十字链表
B.三元组表和邻接矩阵
C.十字链表和二叉链表
D.邻接矩阵和十字链表 -
在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是__D__。
A.p->next=s; s->prior=p;
p->next->prior=s; s->next=p->next;
B.s->prior=p; s->next=p->next;
p->next=s; p->next->prior=s;
C.p->next=s; p->next->prior=s;
s->prior=p; s->next=p->next;
D.s->prior=p; s->next=p->next;
p->next->prior=s; p->next=s; -
一个长度为99的循环链表,指针A和指针B都指向了链表中的同一个节点,A以步长为1向前移动,B以步长为3向前移动,一共需要同时移动多少步A和B才能再次指向同一个节点__A__。
A.99
B.100
C.101
D.49
E.50
F.51
解析:设A走x步 那么B久走3x步 两个要碰到 所以有(3x-x)%99=0 x取99才可以。 -
设单循环链表中节点的结构为(data,next),且rear是指向非空的带头节点的单循环链表的尾节点的指针。若想删除链表第一个数据元素(首元节点),则应执行下列哪一个操作?(A)
A.s=rear;rear=rear->next;free(s)
B.rear=rear->next;free(rear)
C.rear=rear->next->next;free(rear)
D.s=rear->next->next;rear->next->next=s->next;free(s);