数据结构习题集第2章
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章线性表
一、单项选择题:
1.链表不具备的特点是。
A.可随机访问任一结点
B.插入删除不需要移动元素
C.不必事先估计存储空间
D.所需空间与其长度成正比
2.不带头结点的单链表L为空的判定条件是。
A. L ==NULL
B. L->next==NULL
C. L->next==L
D. L!= NULL
3.带头结点的单链表L为空的判定条件是。
A. L ==NULL
B. L->next==NULL
C. L->next==L
D. L != NULL
4.带头结点的双循环链表L为空表的条件是。
A. L==NULL
B. L->next==NULL
C. L->prior==NULL
D. L->next==L
5.在循环双链表的p所指结点之前插入s所指结点的操作是。
A. p->prior=s; s->next=p; p->prior->next=s; s->prior=p->prior;
B. p->prior=s; p->prior->next=s; s->next=p; s->prior=p->prior;
C. s->next=p; s->prior=p->prior; p->prior=s; p->prior->next=s;
D. s->next=p; s->prior=p->prior; p->prior->next=s; p->prior=s;
6.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用
存储方式最节省运算时间。
A.单链表
B.给出表头指针的单循环链表
C.双链表
D.带头结点的双循环链表
7.需要一次性分配较大连续存储空间,插入和删除不需要移动元素的线性表,其存储结构
是。
A.单链表
B.静态链表
C.线性链表
D.顺序存储结构
8.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度
是。
A. O(1)
B. O(n)
C. O(n2)
D. O(nlog2n)
9.与单链表相比,双链表的优点之一是。
A.插入、删除操作更简单
B.可以进行随机访问
C.可以省略表头指针或表尾指针
D.顺序访问相邻结点更灵活
10.如果对线性表的运算只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,
则最好使用。
A.只有表头指针没有表尾指针的循环单链表
B.只有表尾指针没有表头指针的循环单链表
C.非循环双链表
D.循环双链表
11.串是一种特殊的线性表,其特殊性体现在。
A.可以顺序存储
B.数据元素是一个字符
C.可以链式存储
D.数据元素可以是多个字符
12.是C语言中″abcd321ABCD″的子串。
A.abcd
B.321AB
C.″abcABC″
D.″21AB″
13.设有两个串p和q,求q在p中首次出现的位置的运算称做。
A.连接
B.模式匹配
C.求子串
D.求串长
二、填空题:
1.在一个长度为n的顺序表中删除第i个元素(1<=i<=n)时,需向前移动个元素。
2.在双链表中,每个结点有两个指针域,一个指向,另一个指向。
3.在一个单链表中的p所指结点之后插入一个s所指结点时,应执行s->next=和
p->next=的操作。
4.在一个单链表中的p所指结点之前插入一个s所指结点时,可执行如下操作:
(1) s->next= ;
(2) p->next=s;
(3) t=p->data;
(4) p->data= ;
(5) s->data= ;
5.两个串相等的充分必要条件是。
6.空串是,其长度等于。
7.设S1=″GOOD″,S2=″︼″,S3=″BYE!″,则S1、S2和S3连接后的结果是。
三、算法设计题:
1.有一个带头结点的单链表L(不同结点的数据域值可能相同),设计一个算法计算数据域
为x的结点个数。
typedef struct lnode
{ elemtype data;
struct lnode *next;
}node,*Linklist;
2.有一个带头结点的单链表L,设计一个算法将L逆置,即最后一个结点变成第一个结点,
原来倒数第二个结点变成第二个结点,如此等等。