数据结构作业及答案1

合集下载

数据结构习题及答案 (1)

数据结构习题及答案 (1)

第八章查找一、判断题1.用二分查找法对一个顺序表进行查找,这个顺序表可以是按各键值排好序的,也可以是没有按键值排好序的。

()2.哈希表的查找不用进行关键字的比较。

()3.哈希表的定义函数H(key)=key%p(p<=m)这种方法是直接定址法。

()4.装填因子α的值越大,就越不容易发生冲突。

( )5.选择hash函数的标准为:随机性好、均匀性好和尽量避免冲突。

( )参考答案:1、×2、×3、×4、×5、√二、填空题1.顺序查找法的平均查找长度为__________,二分查找法的平均查找长度为________,分块查找法(以顺序查找确定块)的平均查找长度为__________,分块查找法(以二分查找确定块〉的平均查找长度为_________,哈希表查找法采用链接法处理冲突时的平均查找长度为_________。

(n+1)/2;((n+1)*log2(n+1))/n-1;(s2+2s+n)/2s;log2(n/s+1)+s/2;1+α2.在各种查找方法中,平均查找长度与结点个数n无关的查法方法是_________哈希表查找3.二分查找的存储结构仅限于_________,且是__________。

顺序;有序的4.在分块查找方法中,首先查找__________,然后再查找相应的___________。

索引;块5.长度为255的表,采用分块查找法,每块的最佳长度是____________。

156.在散列函数H(key)=key%p中,p应取_______________。

小于表长的最大素数7.假设在有序线性表A[1..20]上进行二分查找,则比较一次查找成功的结点数为_________,则比较二次查找成功的结点数为__________,则比较三次查找成功的结点数为_________,则比较四次查找成功的结点数为________,则比较五次查找成功的结点数为_________,平均查找长度为_________。

数据结构试题及答案(1)

数据结构试题及答案(1)

数据结构试题一、单选题1、在数据结构的讨论中把数据结构从逻辑上分为(C )A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构。

2、采用线性链表表示一个向量时,要求占用的存储空间地址(D )A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。

A nB n/2C (n-1)/2D (n+1)/24、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。

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、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。

A 起泡排序B 堆排序C 锦标赛排序D 快速排序6、设有两个串t和p,求p在t中首次出现的位置的运算叫做( B )。

A 求子串B 模式匹配C 串替换D 串连接7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。

所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是( C )。

A 80B 100C 240D 2708、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。

A 栈B 队列C 循环队列D 优先队列9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( C )。

10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。

A ( front - rear + 1) % mB ( rear - front + 1) % mC ( front - rear + m) % mD ( rear - front + m) % m11、一个数组元素a[i]与( A )的表示等价。

数据结构(C++)第一次作业参考答案

数据结构(C++)第一次作业参考答案

数据结构第一次作业数据结构第一次作业一.单项选择题(20分)( )1.已知一算术表达式的后缀形式为ABC *+DE-/,则其中缀形式为 _________。

a、(A+B *C)/(D-E)b、A+B*C /D-Ec、(A+B*C)/D-Ed、A+B*C/(D-E)( )2.若某链表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则采用________存储方式最节省运算时间(假设链表仅设有一个first指针)。

a. 单链表b. 带头结点的双循环链表c. 单循环链表d. 双链表( )3.设一个栈的输入序列为A,B,C,D,则所得到的输出序列不可能是_______。

a. A,B,C,Db. D,C,B,Ac. A,C,D,Bd. D,A,B,C( )4.若线性表最常用的操作是存取第i个元素及其直接前驱的值,则采用_____存储方式节省时间。

a.顺序表 b.双链表 c.单循环链表 d.单链表( )5.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为_______。

(1≤i≤n+1)a、O(0)b、O(1)c、O(n)d、O(n2)( )6.若指针L指向一带头结点的循环单链表的头结点,该表为空表的条件是_______为真值;a. !( L -> link );b. L == (L -> link) -> link;c. L -> link;d. L == L -> link;( )7.用数组A[0..N-1]存放一个循环队列,一元素出队时,其队头指针front的修改方法是________:a. front = (front + 1) mod N;b. front = (front - 2)mod N;c. front = front + 1;d. front = front – 2;( )8.若用Head()和Tail()分别表示取广义表的表头和表尾,广义表A=(1,2,(3,4),(5,(6,7))),则Head(Tail(Head(Tail(Tail(A))))) 。

数据结构习题(有答案)(精选文档)

数据结构习题(有答案)(精选文档)

数据结构习题(有答案) 第1章绪1。

1 有下列几种二元组表示的数据结构,试画出它们分别对应的图形表示,并指出它们分别属于何种结构。

(1) A= ( D,R ),其中,D = { a1,a2,a3,a4}, R={ }(2) B= ( D,R ),其中,D = { a,b,c,d,e}, R={ (a,b),(b,c),(c,d),(d,e)}(3) C= ( D,R),其中,D = { a,b,c,d,e,f,g}, R={(d,b),(d,g),(1)集合(2) 线性表a b c d e(3)树fgabcde(4)图1453621 / 48·····谢阅。

(b,a),(b,c),(g,e),(e,f)}(4) K= ( D,R ),其中,D= { 1,2,3,4,5,6}, R={〈1,2>,〈2,3>,〈2,4>,<3,4>,<3,5>,<3,6>,<4,5〉,〈4,6〉}1.2设n为正整数,求下列各程序段中的下划线语句的执行次数。

(1) i=1;k=0while(i 〈=n-1){k+=10*i ;i++;(2) for (int i=1;i<=n; i++)for (int j=1; j〈=n; j++){c[i][j]=0;解:(1) n-1(2) ∑∑∑====ninjnkn111312 / 48·····谢阅。

}ﻩ for(intk=1; k〈=n; k++)c[i][j]=c[i][j]+a[i][k]*b[k][j]}(3) x=0;y=0;for (int i=1; i<=n; i++)for (int j=1; j<=i; j++)for (intk=1; k〈=j; k ++)(3)62)1)(nn(n21)(216)12)(1(2121212)1(1112111111++=+•+++•=+=+==∑∑∑∑∑∑∑∑========nnnnniii ijnininiijjkniijni3 / 48·····谢阅。

国开作业《数据结构(本)-形考作业》 (1)

国开作业《数据结构(本)-形考作业》 (1)

题目:有一个长度为10的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。

选项A:26/10选项B:29/10选项C:29/9选项D:31/10答案:29/10题目:已知一个有序表为{11,22,33,44,55,66,77,88,99},则顺序查找元素55需要比较()次。

选项A:3选项B:6选项C:5选项D:4答案:5题目:有数据{53,30,37,12,45,24,96},从空二叉树开始逐个插入数据来形成二叉排序树,若希望高度最小,应该选择的序列是()。

选项A:45,24,53,12,37,96,30选项B:37,24,12,30,53,45,96选项C:30,24,12,37,45,96,53选项D:12,24,30,37,45,53,96答案:37,24,12,30,53,45,96题目:对于顺序存储的有序表{5,12,20,26,37,42,46,50,64},若采用折半查找,则查找元素26的比较次数是()。

选项A:5选项B:3选项C:6选项D:4答案:4题目:在所有的排序方法中,关键字比较的次数与记录初始排列秩序无关的是()。

选项A:直接插入排序选项B:希尔排序选项C:冒泡排序选项D:直接选择排序答案:直接选择排序题目:对线性表进行二分查找时,要求线性表必须()。

选项A:以顺序存储方式,且数据元素有序选项B:以链接存储方式选项C:以顺序存储方式选项D:以链接存储方式,且数据元素有序答案:以顺序存储方式,且数据元素有序题目:采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为()。

选项A:(n+1)/2选项B:n/2选项C:(n-1)/2选项D:n答案:(n+1)/2题目:从未排序序列中依次取出元素与已经排好序的序列中的元素作比较。

将其放入已排序序列的正确的位置上,此方法称为()。

选项A:交换排序选项B:归并排序选项C:选择排序选项D:插入排序答案:插入排序题目:依次将每两个相邻的有序表合并成一个有序表的排序方法称为()。

大工15秋《数据结构》在线作业1满分答案

大工15秋《数据结构》在线作业1满分答案

大工15秋《数据结构》在线作业1满分答案大工15秋《数据结构》在线作业1一单选题1.广义表((e))的表头是()。

A. eB. (e)C. ()D. (())正确答案:B2.在一个单链表中,若要在p所指向的结点之后插入一个新结点,则需要相继修改()个指针域的值。

A. 1B. 2C. 3D. 4正确答案:B3.在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为()。

A. (n+1)/2B. n/2C. nD. n+1正确答案:C4.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()。

A. head==NULLB. head→next==NULLC. head→next==headD. head!=NULL正确答案:B5.一个顺序栈S,元素a,b,c,d,e依次进栈,如果5个元素的出栈顺序为b,e,d,c,a,则顺序栈的容量至少应为()。

A. 2B. 3C. 4D. 5正确答案:C6.在表长为n的顺序表中,若在每个位置插入数据元素的概率相等,插入一个数据元素平均需要移动()个数据元素。

A. (n-1)/2B. n/2C. n-1D. n正确答案:B7.广义表L=(a,(b,c)),进行Tail(L)操作后的结果为()。

A. cB. b,cC.(b,c)D.((b,c))正确答案:D8.表达式a*(b+c)-d的后缀表达式是()。

A. abcd*+-B. abc+*d-C. abc*+d-D. -+*abcd精确谜底:B9.在一个单链表中,删除*p结点之后的一个结点的操作是()。

A. p->next=p;B. p->next->next=p->next;C. p->next->next=p;D. p->next=p->next->next;精确谜底:D10.最大容量为n的轮回行列,队尾指针是rear,队头是front,则队空的条件是()。

(完整版)数据结构练习题及参考答案

(完整版)数据结构练习题及参考答案

数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。

A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。

A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。

for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。

for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。

int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。

2. 数据的存储结构被分为__________、_________、__________和__________四种。

3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。

4. 一种抽象数据类型包括__________和__________两个部分。

5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。

数据结构(树和二叉树)练习题与答案1

数据结构(树和二叉树)练习题与答案1

1、树最适合用来表示()。

A.元素之间无联系的数据B.元素之间具有层次关系的数据C.无序数据元素D.有序数据元素正确答案:B2、现有一“遗传”关系,设x是y的父亲,则x可以把他的属性遗传给y。

表示该遗传关系最适合的数据结构为()。

A.线性表B.树C.数组D.图正确答案:B3、一棵节点个数为n、高度为h的m(m≥3)次树中,其分支数是()。

A.n+hB.h-1C.n-1D.nh正确答案:C4、若一棵3次树中有2个度为3的节点,1个度为2的节点,2个度为1的节点,该树一共有()个节点。

A.11B.5C.8D.10正确答案:A解析: A、对于该3次树,其中有n3=2,n2=1,n1=2,总分支数=总度数=n-1,总度数=1×n1+2×n2+3×n3=10,则n=总度数+1=11。

5、设树T的度为4,其中度为1、2、3、4的节点个数分别为4、2、1、1,则T中的叶子节点个数是()。

A.6B.8C.7D.5正确答案:B解析: B、这里n1=4,n2=2,n3=1,n4=1,度之和=n-1=n1+2n2+3n3+4n4=15,所以n=16,则n0=n-n1-n2-n3-n4=16-8=8。

6、有一棵三次树,其中n3=2,n2=1,n0=6,则该树的节点个数为()。

A.9B.12C.大于等于9的任意整数D.10正确答案:C解析: C、n=n0+n1+n2+n3=6+n1+1+2=9+n1。

7、假设每个节点值为单个字符,而一棵树的后根遍历序列为ABCDEFGHIJ,则其根节点值是()。

A.JB.BC.以上都不对D.A正确答案:A8、一棵度为5、节点个数为n的树采用孩子链存储结构时,其中空指针域的个数是()。

A.4nB.4n-1C.4n+1D.5n正确答案:C解析: C、总指针数=5n,非空总指针数=分支数=n-1,空指针域的个数=5n-(n-1)=4n+1。

9、有一棵三次树,其中n3=2,n2=2,n1=1,该树采用孩子兄弟链存储结构时,则总的指针域数为()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章
2.22 试写一算法,对单链表实现就地逆置,即利用原表的存储空间将线性表
(a1,a2,…,an)逆置为(an,an-1,…,a1)
提示:将原链表中的头结点和第一个元素结点断开(令其指针域为空),先构成一个空表,然后将原链表中各结点从第一个结点起依次插入这个新表的头部。

答:void LinkList_reverse(Linklist &L)//链表的就地逆置;为简化算法,假设表长大于2
{
p=L->next;q=p->next;s=q->next;p->next=NULL;
while(s->next)
{
q->next=p;p=q;
q=s;s=s->next; //把L的元素逐个插入新表表头
}
q->next=p;s->next=q;L->next=s;
}//LinkList_reverse
分析:本算法的思想是,逐个地把L的当前元素q插入新的链表头部,p为新表表头.
第三章
3.1 设将整数1、2、3、4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请回答下有问题:
(1)若入栈次序为push(1),pop(),push(2),push(3),pop(),pop( ),push(4),pop( ),则出栈的数字序列为什么?
(2) 能否得到出栈序列1423和1432?并说明为什么不能得到或者如何得到。

答:(1)1 3 2 4 后进先出,先进后出
(2) 1423无法得到,因为只能这样操作,Push(1), Pop(), Push(2), Push(3), Push(4), Pop(),Pop(), Pop(),结果序列是1432
3.12 写出以下程序段的输出结果(队列中的元素类型QElemType 为char)。

Void main( ){
Queue Q; InitQueue(Q);
Char x=‘e’, y=‘c’;
EnQueue(Q, ‘h’); EnQueue(Q, ‘r’); EnQueue(Q, y);
DeQueue(Q, x); EnQueue(Q, x);
DeQueue(Q, x); EnQueue(Q, ‘a’);
While ( !QueueEmpty(Q) ){
DeQueue(Q, y);
Printf(y);
}
Printf(x);
}
答:输出结果是char。

EnQueue (Q,’h’); EnQueue (Q,’r’); EnQueue (Q, y); //hrc入队此时队列是'hrc'(h是头)
DeQueue (Q,x); EnQueue (Q,x); //'h'赋给x出队,然后x再入队此时x='h'即h入队,此时队列是‘rch’。

DeQueue (Q,x); EnQueue (Q,’a’); //‘r’赋给x出队,‘a’入队,此时队列是‘cha’while(!QueueEmpty(Q)){ DeQueue (Q,y);printf(y);}; //当队列不为空时依次把队列中元素赋给y出列,并打印。

此时打印出的是cha
Printf(x); //打印x的值就是前面赋给x的‘r’ 所以打印出的是char
第四章
4.3 设s=‘I AM A STUDENT’,t=‘GOOD’,q=‘WORKER’,求:
(1)StrLength(s),StrLength(t)
(2)SubString(s, 8, 7) ,SubString(t, 2, 1)
(3)Index(s, ‘A’,1),Index(s,t,3)
(4)Replace(s, ‘STUDENT’, q)
(5)Concat(SubString(s,6,2),Concat(t,SubString(s,7,8)))
答:
1) 14,4
2) STUDENT,O
3) 3,0
4) "I AM A WORKER"
5) "A GOOD WORKER"
第五章
5.1 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A 的起始存储位置(基地址)为1000,计算:
(1)数组A的体积(即存储量);
(2)数组A的最后一个元素a57的第一个字节的地址;
(3)按行存储时,元素a14的第一个字节的地址;
(4)按列存储时,元素a47的第一个字节的地址。

答:(1)数组A的体积为6×8×6=288字节。

(2)LOC(5,7)=LOC(0,0)+(5*8+7)*6=1000+282=1282
(3) LOC(1,4)=LOC(0,0)+(1*8+4)*6=1000+72=1072
(4)按列存储LOC(4,7)=LOC(0,0)+(7*6+4)*6=1000+276=1276
5.10 求下列广义表操作的结果:
(1)GetHead( (p, h, w) );
(4)GetTail( ((a ,b) ,(c ,d)) );
(5)GetHead ( GetTail ( ((a,b),(c,d)) ) )。

答:(1)head ((p,h,w))=p;
(4)tail(((a,b),(c,d)))=((c,d));
(5)head(tail(((a,b),(c,d))))=(c,d);
5.12 按教科书5.5节中图5.8所示结点结构,画出下列广义表的存储结构图,并求它的深度。

(1)( ( ( ) ) , a , ( ( b , c ) , ( ) , d ) , ( ( ( e ) ) ) )
(2)( ( ( ( a ) , b ) ) , ( ( ( ) , d ) , ( e , f ) ) )
答:
(1)和(2)深度都为4.
第六章
1 在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点?
【解答】结点个数为n时,高度最小的树的高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。

2已知一棵二叉树的前序遍历的结果是ABECDFGHIJ, 中序遍历的结果是EBCDAFHIGJ, 试画出这棵二叉树。

【解答】
当前序序列为ABECDFGHIJ,中序序列为EBCDAFHIGJ时,逐步形成二叉树的过程如
下图所示:
3给定权值集合{15, 03, 14, 02, 06, 09, 16, 17},
构造相应的霍夫曼树, 并计算它的带权外部路径长度。

【解答】
此树的带权路径长度
WPL = 229。

4 假定用于通信的电文仅由8个字母c1, c2, c3, c4, c5, c6, c7, c8组成, 各字母在电文中出现的频率分别为5, 25, 3, 6, 10, 11, 36, 4。

试为这8个字母设计不等长Huffman 编码, 并给出该电文的总码数。

【解答】已知字母集 { c1, c2, c3, c4, c5, c6, c7, c8 },频率 {
5, 25, 3, 6, 10, 11, 36, 4 },则
F :
(Ⅰ) (Ⅱ) (Ⅲ)
(Ⅳ)
(
(Ⅵ) (Ⅶ)
电文总码数为 4 * 5 + 2 * 25 + 4 * 3 + 4 * 6 + 3 * 10 + 3 * 11 + 2 * 36 + 4 * 4 = 257。

相关文档
最新文档