数据结构李春葆习题与解析.docx
- 文档编号:6380178
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:24
- 大小:71.75KB
数据结构李春葆习题与解析.docx
《数据结构李春葆习题与解析.docx》由会员分享,可在线阅读,更多相关《数据结构李春葆习题与解析.docx(24页珍藏版)》请在冰豆网上搜索。
数据结构李春葆习题与解析
数据结构(C语言篇)―习题与解析(修订版)
清华大学出版社
一、绪论
选择题
1.数据结构是一门研究非数值计算的程序设计问题计算机的 以及它们之间的 和运算等的学科。
1 A.数据元素 B.计算方法 C.逻辑存储 D.数据映像
2 A.结构 B.关系 C.运算 D.算法
2.数据结构被形式地定义为(K,R),其中K是 的有限集,R是K上的 有限集。
1 A.算法 B.数据元素 C.数据操作 D.逻辑结构
2 A.操作 B.映像 C.存储 D.关系
3.在数据结构中,从逻辑上可以把数据结构分成 。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构
C.线性结构和非线性结构 D.内部结构和外部结构
4.线性结构的顺序存储结构是一种 A 的存储结构,线性表的链式存储结构是一种 B 的存储结构。
A.随机存取 B.顺序存取 C.索引存取 D.散列存取
5.算法分析的目的是 C ,算法分析的两个主要方面是 AB 。
1 A.找出数据结构的合理性 B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进 D.分析算法的易懂性和文档性
2 A.空间复杂度和时间复杂度 B.正确性和简单性
C.可读性和文档性 D.数据复杂性和程序复杂性
6.计算机算法指的是 C ,它必须具备输入、输出和 B 等 5个特性。
1 A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法
2 A.可执行性、可移植性和可扩充性 B.可行性、确定性和有穷性
C.确定性、有穷性和稳定性 D.易读性、稳定性和安全性
7.线性表的逻辑顺序与存储顺序总是一致的,这种说法 B 。
A.正确 B.不正确
8线性表若采用链式存储结构时,要求内存中可用存储单元的地址 D 。
A.必须连续的B.部分地址必须连续的 C.一定是不续的 D连续不连续都可以
9.以下的叙述中,正确的是 B 。
A.线性表的存储结构优于链式存储结构B.二维数组是其数据元素为线性表的线性表
C.栈的操作方式是先进后出D.队列的操作方式是先进先出
10.每种数据结构都具备三个基本运算:
插入、删除和查找,这种说法 B 。
A.正确 B.不正确
填空题
1.数据逻辑结构包括三种类型线性结构 、树形结构 和 图形结构 ,树形结构和图形结构合称为 非线性结构 。
2.在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1 个前驱结点;最后一个结点 没有 后续结点,其余每个结点有且只有 1 个后续结点。
3.在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续可以 任意多个 。
4.在图形结构中,每个结点的前驱结点数和后续结点数可以 任意多个 。
5.线性结构中元素之间存在 一对一 关系,树形结构中元素之间存在 一对多 关系,图形结构中元素之间存在 多对多 关系。
6.算法的五个重要特性是 有穷性 、 确定性 、 可行性 、 输入 、 输出 。
7.下面程序段的时间复杂度是 O(m*n) 。
for(i=0;i for(j=0;j A[i][j]=0; 8.下面程序段的时间复杂度是 O(n) 。 i=s=0; while(s { i++;/*i=i+1*/ s+=i;/*s=s+i*/ } 9.下面程序段的时间复杂度是 O(n2) 。 s=0; for(i=0;i for(j=0;j s+=B[i][j]; sum=s; 10.下面程序段的时间复杂度是 O(log3n) 。 i=1; while(i<=n) i=i*3; 二、线性表 单项选择题 1.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是 B 。 A.110 B.108 C.100 D.120 2.一个栈的入栈序列是a、b、c、d、e,则栈的不可能输出序列是 C 。 A.edcba B.decba C.dceab D.abcde 3.若一个栈的入栈序列是1、2、3、…、n,其输出序列为p1、p2、p3、…、pn,若p1=n,则pi为 C 。 A.i B.n=iC.n-i+1 D.不确定 4.栈结构通常采用的两种存储结构是 A 。 A.线性存储结构和链表存储结构 B.散列方式和索引方式 C.链表存储结构和数组 D.线性存储结构和非线性存储结构 5.判断一个栈ST(最多元素为m)为空的条件是 B 。 A.ST->top! =0 B.ST->top==0C.ST->top! =mD.ST->top==m 6.判断一个栈ST(最多元素为m)为满栈的条件是 D 。 A.ST->top! =0 B.ST->top==0C.ST->top! =m-1D.ST->top==m-1 7.栈的特点是 B ,队列的特点是 A 。 A.先进先出,后进后出 B.先进后出,后进先出 8.一个队列的入队序列是1、2、3、4,则队列输出序列是 B 。 A.4、3、2、1 B.1、2、3、4 C.1、4、3、2D.3、2、4、1 9.判断一个队列QU(最多元素为m)为空的条件是 C 。 A.QU->rear-QU->front==m B.QU->rear-QU->front-1==m C.QU->front==QU->rearD.QU->front-QU->rear+1 10.判断一个队列QU(最多元素为m)为满队列的条件是 A 。 A.QU->rear-QU->front==m B.QU->rear-QU->front-1==m C.QU->front==QU->rearD.QU->front-QU->rear+1 11.判断一个循环队列QU(最多元素为m)为空的条件是 。 A.QU->front==QU->rear B.QU->front! =QU->rear C.QU->front==(QU->rear+1)%mD.QU->front! =(QU->rear+1)%m 12.判断一个循环队列QU(最多元素为m)为满队列的条件是 。 A.QU->front==QU->rear B.QU->front! =QU->rear C.QU->front==(QU->rear+1)%mD.QU->front! =(QU->rear+1)%m 13循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是 。 A.(rear-front+m)%mB.rear-front+1 C.rear-front-1 D.rear-front 14.栈和队列的共同点是 。 A.都是先进后出 B.都是先进先出 C.只允许在端点处插入、删除元素D.没有共同点 填空题 1.向量、栈和队列都是 结构,可以在向量的 位置插入和删除元素;对于栈只能在 插入和删除元素;对于队列只能在 插入元素和 删除元素。 2.在一个长度为n的向量中的第i个元素(1≤i≤n)之前插入一个元素时,需向后移动 个元素。 3.在一个长度为n的向量中的删除第i个元素(1≤i≤n)时,需要向前移动 个元素。 4.向栈中压入元素的操作是 。 5.对栈进行退栈时的操作是 。 6.在一个循环队列中,队首指针指向队首元素的 。 7.从循环队列中删除一个元素时,其操作是 。 8.在具有n个单元的循环队列中,队满时共有 个元素的。 9.一个栈的输入序列是12345,则栈的输出序列43512是 。 10.一个栈的输入序列是12345,则栈的输出序列12345是 。 三、链表 单项选择题 1.不带头结点的单链表head为空的判定条件是 。 A.head==NULL B.head->nxt==NULL C.head->next==head D.head! =NULL 2.带头结点的单链表head为空的判定条件是 。 A.head==NULL B.head->nxt==NULL C.head->next==head D.head! =NULL 3.非空的循环单链表head的尾结点(由p所指向)满足 。 A.p->next==NULL B.p==NULL C.p->next==head D.p==head 4.在循环双链表的p所指结点之后插入s所指结点的操作是 。 A.p->right=s;s->left=p;p->right->left=s;s->right=p->right; B.p->right=s;p->right->left=s;s->left=p;s->right=p->right; C.s->left=p;s->right=p->right;p->right=s;p->right->left=s; D.s->left=p;s->right=p->right;p->right->left=s;p->right=s; 5.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点, 则执行 。 A.s->next=p->next;p->next=s; B.p->next=s->next;s->next=p; C.q->next=s;s->next=p; D.p->next=s;s->next=q; 6.在一个单链表中,已知p所指结点不是最后结点,在p之后插入s所指结点,则执行 。 A.s->next=p;p->next=s; B.s->next=p->next;p->next=s; C.s->next=p->next;p=s; D.p->next=s;s->next=p; 7.在一个单链表中,若删除p所指结点的后续结点,则执行 。 A.p->next=p->next->next; B.p=p->next;p->next=p->next->next; C.p->next=p->next; D.p=p->next->next; 9.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较 个结点。 A.n B.n/2C.(n-1)/2D.(n+1)/2 10.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是 。 A.O (1) B.O(n)C.O(n2)D.O(nlog2n) 11.给定有n个元素的向量,建立一个有序单链表的时间复杂度是 。 A.O (1) B.O(n)C.O(n2)D.O(nlog2n) 12.向一个栈顶指针为HS的链栈中插入s所指结点,则执行 。 A.HS->next=s; B.s->next=HS->next;HS->next=s; C.s->next=HS;HS=s; D.s->next=HS;HS=HS->next; 13.从一个栈顶指针为HS的链栈中删除一个结点,用x保存被删除结点的值,则执行 。 A.x=HS;HS=HS->next;B.x=HS->data; C.HS=HS->next;x=HS->data;D.x=HS->data;HS=HS->next; 14.在一个链队中,假设f和r分别为队首和队尾指针,插入s所指结点,则执行 。 A.f->next=s;f=s; B.r->next=s;r=s; C.s->next=r;r=s; D.s->next=f;f=s; 15.在一个链队中,假设f和r分别为队首和队尾指针,删除一个结点,则执行 。 A.r=f->next; B.r=r->next; C.f=f->next; D.f=r->next; 填空题 1.单链表是 的链接存储表示。 2.可以使用 表示树形结构。 3.在双链表中,每个结点有两个指针域,一个指向 ,另一个指向 。 4.在一个单链表中,p所指结点之前插入s所指向结点,可执行如下操作: (1)s->next= ; (2)p->next=s; (3)t=p->data; (4)p->data= ; (5)s->data= ; 5.在一单链表中,删除p所指结点时,应执行以下操作: (1)q=p->next; (2)p->data=p->next->data; (3)p->next=; (4)free(q); 6.带头结点的单链表head为空的条件是 。 7.在一个单链表中,p所指结点之后插入s所指向结点,应执行s->next= 和 p->next=的操作。 8.非空的循环单链表head的尾结点(由p所指向),满足 。 9.在栈顶指针为HS的链栈中,判定栈空的条件是 。 10.在栈顶指针为HS的链栈中,计算该链栈中结点个数的函数是 。 11.在HQ的链队中,判定只有一个结点的条件是 。 12.在HQ的链队中,计算该栈链中结点个数的函数是 。 四、串 单项选择题 1.空串与空格串是相同的,这种说法 。 A.正确 B.不正确 2.串是一种特殊的线性表,其特殊性体现在 。 A.可以顺序存储 B.数据元素是一个字符 C.可以链接存储 D.数据元素可以是多个字符 3.设两个字符串p和q,求q在p中首次出现的位置的运算称作 。 A.连接 B.模式匹配 C.求子串 D.求串长 4.设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x与y串的连接串,函数subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,函数len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是 。 A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF 填空题 1.串的两种最基本的存储方式是 。 2.两个串相等的充分必要条件是 。 3.空串是 ,其长度等于 。 4.空格串是 ,其长度等于 。 5.设s=‘IAMATEACHER’,其长度是 。 6.设s1=‘GOOD’,s2=‘’,s3=‘BYE! ’,则s1、s2和s3连接后的结果是 。 五、数组与稀疏矩阵 单项选择题 1.常对数组进行的两种基本操作是 。 A.建立与删除 B.索引和修改 C.查找和修改 D.查找与索引 2.二维数组M的成员是6个字符(每个字符占一个存储单元)组成的串,行下标i的范围从 0到8,列下标j的范围从1到10,则存放M至少需要 1 个字节;M的第8列和第5 行共占 2 个字节;若M按行优先方式存储,元素M[8][5]的起始地址与当M按列优先 方式存储时的 3 元素的起始地址一致。 1A.90 B.180C.240D.540 2A.108 B.114C.54D.60 3A.M[8][5] B.M[3][10]C.M[5][8]D.M[0][9] 3.二维数组M的成员是4个字符(每个字符占一个存储单元)组成的串,行下标i的范围从 0到4,列下标j的范围从0到5,M按行存储时元素M[3][5]的起始地址与M按列存储时元 素的 元素的起始地址一致。 A.M[2][4] B.M[3][4]C.M[3][5]D.M[4][4] 4.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地 址SA开始连续存放在存储器内,存放该数组至少需要的单元素是 。 A.80 B.120 C.240 D.270 5.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地 址SA开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为 。 A.SA+141 B.SA+144 C.SA+222 D.SA+225 6.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地 址SA开始连续存放在存储器内,该数组按列存放时,元素A[5][8]的起始地址为 。 A.SA+141 B.SA+180 C.SA+222 D.SA+225 7.稀疏矩阵一般的压缩存储方法有两种,即 。 A.二维数组和三维数组 B.三元组与散列 C.三元组与十字链表 D.散列和十字链表 8.若用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点 。 A. 正确 B. 不正确 9.设矩阵A是一个对称矩阵,为节省存储,将其下三角部分按行序存放在一信数组B[1,n(n-1)/2]中,对下三角部分中任一元素aij(i≥j),在一组数组B的下标位置k的值是 。 A.i(i-1)/2+j-1 B.i(i-1)/2+j C.i(i+1)/2+j-1 D.i(i+1)/2+j 填空题 1.已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是 。 2.二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元,并且A[0][0]的存储地址是200,则A[6][10]的地址是 。 3.二维数组A[10..20][5..20]采用行序为主方式存储,每个元素占4个存储单元,并且A[10][5]的存储地址是1000,则A[18][9]的地址是 。 4.有一个10阶对称矩阵A,采用压缩存储方式(以行为主存储,且LOC(A[0][0])=1),则 A[8][5]的地址是 。 5.设n行n列的下三角矩阵A已压缩到一维数组S[1..n*(n+1)/2]中,若按行序为主存储,则 A[i][j]对应的S中的存储位置是 。 6.一个稀疏矩阵如图所示,则对应的三元数组表示为 。 八、树形结构 单项选择题 1.如图所示的4棵二叉树中, 不是完全二叉树。 3.在线索化二叉树中,t所指结点没有左子树的充要条件是 。 A.t->left==NULL B.t->ltag==1C.t->ltag==1且t->left==NULLD.以上都不对 4.二叉树按某种顺序线索化后,任一结点均有指向其前趋和后继的线索,这种说法 。 A.正确 B.错误 5.二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法 。 A.正确 B.错误 6.由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法 。 A.正确 B.错误 7.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少 为 。 A.2h B.2h-1 C.2h+1 D.h+1 8.如图所示二叉树的中序遍历序列是 。 A.abcdgef B.dfebagc C.dbaefcg D.defbagc 9.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,前序遍历序列是 。 A.acbed B.decab C.deabc D.cedba 10.如果T2是由有序树T转换而来的二叉树,那么T中结点的前序就是T2中结点的 。 A.前序B.中序 C.后序D.层次序 11.如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2中结点的 。 A.前序B.中序 C.后序D.层次序 12某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历结点访问顺序是dgbaechf,则其后序遍历结点访问顺序是 。 A.bdgcefha B.gdbecfha C.bdgaechf D.gdbehfca 13.二叉树为二叉排序树的充分必要条件是任一结点的值均大于其左孩子的值、小于其右孩子的值,这种说法 。 A.正确 B.错误 14.按照二叉树的定义,具有3个结点的二叉树有 种。 A.3B.4 C.5D.6 15.如图所示二叉树的中序遍历序列是 。 A.abdgcefh B.dgbaechf C.gdbehfca D.abcdefgh 16.树的基本遍历策略可分为先根遍历和后根遍历;二叉树基本遍历策略可分为先序遍历、 中序遍历和后序遍历。 这时,我们把由树转化得到的二叉树叫做这棵树对应的二叉树。 结论 是正确的。 A.树的先根遍历序列与二叉树的先序遍历序列相同 B.树的后根遍历序列与二叉树的后序遍历序列相同 C.树的先根遍历序列与二叉树的中序遍历序列相同 D.以上都不对 17.深度为5的二叉树至多有 个结点。 A.16 B.32 C.31 D.10 18.在一非空二叉树的中序遍历序列中,根结点的右边 。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 李春葆 习题 解析