数据结构练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构练习题
第一章绪论
一.选择题
1、在数据结构的讨论中把数据结构从逻辑上分为()。
A.内部结构与外部结构
B.静态结构与动态结构
C.线性结构与非线性结构
D.紧凑结构与非紧凑结构
2、采用线性链表表示一个向量时,要求占用的存储空间地址()。
A: 必须是连续的 B 部分地址必须是连续的
C: 一定是不连续的C: 可连续可不连续
3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为()。
A: n B: n/2 C: (n-1)/2 D: (n+1)/2
4、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行()。A: s→link = p→link;p→link = s; B: p→link = s; s→link = q;
C: p→link = s→link;s→link = p;D: q→link= s;s→link= p;
5.从一个二维数组b[m][n]中找出最大值元素的时间复杂度为
A. m
B. n
C. m+n
D. mn
6.在以下时间复杂度的数量级中,数量级最大的是
log B. 2n C. n2 D. !n
A. n2
7.若需要利用形参直接访问实参,则应把形参变量说明为________参数
A、指针
B、引用
C、值
8.下面程序段的时间复杂度为____________。
for(int i=0; i for(int j=0; j a[i][j]=i*j; A、 O(m2) B、 O(n2) C、 O(m*n) D、 O(m+n) 9.执行下面程序段时,执行S语句的次数为____________。 for(int i=1; i<=n; i++) for(int j=1; j<=i; j++) S; A、 n2 B、 n2/2 C、 n(n+1) D、 n(n+1)/2 二.填空题 1.通常,评价一个算法有正确性、健壮性、_________、时间复杂度、空间复杂度五个方面。 2.在数据结构中,数据的逻辑结构有线性结构、图结构、________________、_______________四种,物理实现上有顺序结构、索引结构、___________、_____________四种。 第二章线性表 一.选择题 1.在一个单链表HL中,若要向q所指结点之后插入一个指针p指向的结点,则执行. A. HL=p; p->link=HL B. P->link=HL; HL=p C. P->link=q->link; q->link=p D. P->link=q->link; q=p->link 2.在一个长度为n的顺序存储线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移个元素。 A、n-i B、n-i+1 C、n-i-1 D、i 3.在一个长度为n 的顺序存储线性表中,删除第i 个元素(1≤i ≤n+1)时,需要从前向后依次前移 个 元素。 A 、n-i B 、n-i+1 C 、n-i-1 D 、i 4.在一个长度为n 的线性表中顺序查找值为x 的元素时,查找时的平均查找长度(即x 同元素的平均比较次 数,假定查找每个元素的概率都相等)为 。 A 、n B 、n/2 C 、(n+1)/2 D 、(n-1)/2 5.在一个单链表HL 中,若要向表头插入一个由指针p 指向的结点,则执行 。 A 、HL = p; p->link = HL; B 、p->link = HL; HL = p; C 、p->link = HL; p = HL; D 、p->link = HL->link; HL->link = p; 6.在一个单链表HL 中,若要在指针q 所指的结点的后面插入一个由指针p 所指的结点,则执行 。 A 、q->link = p->link ; p->link = q; B 、p->link = q->link; q = p; C 、q->link = p->link; p->link = q; D 、p->link = q->link ; q->link = p; 7.在一个单链表HL 中,若要删除由指针q 所指向结点的后继结点,则执行 。 A 、p = q->link ; p->link = q->link; B 、p = q->link ; q->link = p; C 、p = q->link ; q->link = p->link; D 、q->link = q->link->link; q->link = q; 6. 链表不具有的特点是 。 A. 不必事先估计存储空间 B. 可随机访问任一元素 C. 插入删除不需要移动元素 D. 所需空间与线性表长度成正比 二.填空题 1.在单链表中,删除指针 P 所指结点的后继结点的语句是: 。 2.在以HS 为表头指针的单链表中,链表为空的条件分别为________。 向一个链栈插入p 所指向的结点时,需要把栈顶指针的值赋给p 所指向的结点的_____,然后把p 赋给_______。 3.在带表头附加结点的线性链表HL 中,链表为空的条件为________________。 对于单链表,若要在指针 P 所指结点之后插入由指针 S 所指结点,则需要执行的语句序列 为: 。 4.在线性表的顺序存储结构中,若每一个元素占 l 个存储单元,则第I 个元素ai 的存储位置为 LOC(ai) = LOC(a1) + 5.在线性表的单链接存储结构中,每个结点包含有两个域,一个叫 域,另一个叫 域。 6.在下面数组a 中链接存储着一个线性表,表头指针为a[0].link ,则该线性表为 7.对于一个长度为n 的顺序存储的线性表,在表头插入元素的时间复杂度为 ,在表尾插入元素的时 间复杂度为 。 8.对于一个长度为n 的单链接存储的线性表,在表头插入元素的时间复杂度为 ,在表尾插入元素的时 间复杂度为 。 9.在线性表的顺序存储中,若一个元素的下标为i ,则它的前驱元素的下标为 ,后继元素的下标 为 。 10.在线性表的单链接存储中,若一个元素所在结点的地址为p ,则其后继结点的地址为 ,若假 定p 为一个数组a 中的下标,则其后继结点的下标为 。 11.在循环单链表中,最后一个结点的指针指向 结点。 12.在双向链表中每个结点包含有两个指针域,一个指向其 结点,另一个指向其 结点。 13.在循环双向链表中表头结点的左指针域指向 结点,最后一个结点的右指针域指向 结点。 14.在以HL 为表头指针的带表头附加结点的单链表和循环单链表中,链表为空的条件分别为 和 。 三、应用题 1.在下面的每个程序段中,假定线性表La 的类型为List ,元素类型ElemType 为int ,并假定每个程序段是 连续执行的,试写出每个程序段执行后所得到的线性表La 。 (1) InitList(La); int a[]={48,26,57,34,62,79}; for(i=0; i<6; i++) InsertFront(La,a[i]); TraverseList(La); a data next