数据结构网上教学活动文本.docx
《数据结构网上教学活动文本.docx》由会员分享,可在线阅读,更多相关《数据结构网上教学活动文本.docx(26页珍藏版)》请在冰豆网上搜索。
![数据结构网上教学活动文本.docx](https://file1.bdocx.com/fileroot1/2023-5/15/abc2d47a-75f6-4975-97f9-01372b31b2d3/abc2d47a-75f6-4975-97f9-01372b31b2d31.gif)
数据结构网上教学活动文本
数据结构网上教学活动文本(2004.10.22)
问:
老师,你好!
!
这门课太难学了?
?
请问有什么好方法吗?
上课听不懂
徐孝凯:
请参考实验教材中的内容学习,可能容易些。
问:
什么是抽象数据类型?
?
徐孝凯:
抽象数据类型同C++中类的概念相似。
徐孝凯:
如何学好这门课
1.认真听面授辅导课;
2.认真做好平时作业;
3.认真按实验教材要求做好每个实验;
4.有问题请教面授课老师和身边的同学;
5.不抠难题怪题,掌握基本概念和算法。
徐孝凯:
如何加强练习
1.按照该课程期末复习指导的要求,掌握教学内容;
2.做好该复习指导中的练习题;
3.做好形成性作业中的每次作业;
4.做好实验教材后面附录中所给的全部综合练习题,特别是选择、填空、判断等题型。
5.参考以前考过的试卷,做会其中的考题。
问:
殷老师,徐老师,下面题怎么解
设L链表中数据为12,24,30,90,84,36,n的初值为0,写出unknown(L.first,n)调用后的结果,指出算法功能
floatunknown(ListNode*f,int&n){
if(f==NULL)return0;
else{
n++;
returnunknown(f->getLink(),n)+f->getData()/n;
}
}
徐孝凯:
返回6个数的平均值。
因为当最后每次递归返回时,n的值不变,即为链表中数据的个数,每次都使一个数据除以6,整个算法是每个数除以6之和。
徐孝凯:
数据结构课程教学如何,是太难了呢?
以后会好写,因为考题难度在下降,并且在实验教材中给出了综合练习题。
赵永虹:
试题有一定难度。
问:
请问数据结构这门课程的学习重点在哪里?
它是开卷考试还是闭卷考试?
题目有哪些类型?
徐孝凯:
1.为闭卷考试,时间为150分钟。
2.题目类型有选择、填空、判断、运算、算法分析、算法设计等。
3.请参考往届考试试卷。
4.请按照实验教材后面给出的综合练习题的范围掌握教学要求和难易程度。
徐孝凯:
四川电大赵老师,你认为数据结构考试难度如何,应如何改进?
赵永虹:
这样经过几次考试,可能好一些
问:
老师这门课程很难我们应怎样才能考好这门课呢?
能否出题简单点?
徐孝凯:
1.为闭卷考试,时间为150分钟。
2.题目类型有选择、填空、判断、运算、算法分析、算法设计等。
3.请参考往届考试试卷。
4.请按照实验教材后面给出的综合练习题的范围掌握教学要求和难易程度。
5.现在试题难道有所降低,和实验教材后的综合练习题难易相当,也许更容易写。
徐孝凯:
参考以前试卷:
中央广播电视大学
计算机科学与技术专业数据结构试题
(2)
2003年8月
题号
一
二
三
四
五
六
总分
得分
一、单项选择题,在括号内填写所选择的标号(每小题1分,共12分)
1.若需要利用形参直接访问实参,则应把形参变量说明为()参数。
A.指针B.引用C.传值D.常值
2.以下说法错误的是()。
A.抽象数据类型具有封装性。
B.抽象数据类型具有信息隐蔽性。
C.使用抽象数据类型的用户可以自己定义对抽象数据类型中数据的各种操作。
D.抽象数据类型的一个特点是使用与实现分离。
3.设有一个n⨯n的对称矩阵A,将其上三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么第i行的对角元素A[i][i]存放于B中()处。
A.(i+3)*i/2B.(i+1)*i/2C.(2n-i+1)*i/2D.(2n-i-1)*i/2
4.已知单链表A长度为m,单链表B长度为n,若将B联接在A的末尾,其时间复杂度应为()。
A.O
(1)B.O(m)
C.O(n)D.O(m+n)
5.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。
A.front==rearB.front!
=NULL
C.rear!
=NULLD.front==NULL
6.设有一个递归算法如下
intfact(intn){//n大于等于0
if(n<=0)return1;
elsereturnn*fact(n-1);
}
则计算fact(n)需要调用该函数的次数为()次。
A.nB.n+1C.n+2D.n-1
7.在一棵高度为h(假定树根结点的层号为0)的完全二叉树中,所含结点个数不小于()。
A.2h-1B.2h+1C.2h-1D.2h
8.一棵树的广义表表示为a(b,c(e,f(g)),d),当用左子女-右兄弟链表表示时,右指针域非空的结点个数为()。
A1B2C3D4
9.向具有n个结点的、结构均衡的二叉搜索树中插入一个元素的时间复杂度大致为()。
A.O
(1)B.O(log2n)C.O(n)D.O(nlog2n)
10.具有n个顶点的有向无环图最多可包含()条有向边。
A.n-1B.nC.n(n-1)/2D.n(n-1)
11.图的广度优先搜索类似于树的()次序遍历。
A.先根B.中根C.后根D.层次
12.如果将所有中国人按照生日(不考虑年份,只考虑月、日)来排序,那么使用下列排序算法中()算法最快。
A.归并排序B.希尔排序C.快速排序D.基数排序
二、填空题,在横线处填写合适内容(每小题1分,共12分)
1.数据结构的存储结构包括顺序、________、索引和散列等四种。
2.在程序运行过程中可以扩充的数组是__________分配的数组。
这种数组在声明它时需要使用数组指针。
3.在链表中进行插入和操作的效率比在顺序存储结构中进行相同操作的效率高。
4.栈是一种限定在表的一端进行插入和删除的线性表,又被称为___________表。
5.如果一个对象部分地包含自己,或自己定义自己,则称这个对象是_________的对象。
6.一棵树的广义表表示为a(b(c,d(e,f),g(h)),i(j,k(x,y))),结点f的层数为_________。
假定树根结点的层数为0。
7.一棵树按照左子女-右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有________子女。
8.向一棵二叉搜索树中插入一个元素时,若元素的值小于根结点的值,则应把它插入到根结点的________上。
9.设图G=(V,E),V={1,2,3,4},E={<1,2>,<1,3>,<2,4>,<3,4>},从顶点1出发,对图G进行广度优先搜索的序列有________种。
10.每次直接或通过基准元素间接比较两个元素,若出现逆序排列就交换它们的位置,这种排序方法叫做__________排序。
11.快速排序在平均情况下的空间复杂度为____________。
12.若对长度n=10000的线性表进行二级索引存储,每级索引表中的索引项是下一级20个表项的索引,则一级索引表的长度为________。
三、判断题,在每小题前面打对号表示正确或打叉号表示失败(每小题1分,共10分)
1.数据的逻辑结构是指各数据元素之间的逻辑关系,是用户根据应用需要建立的。
2.顺序表和一维数组一样,都可以按下标随机(或直接)访问。
3.在一个顺序存储的循环队列中,队头指针指向队头元素的后一个位置。
4.用非递归方法实现递归算法时一定要使用递归工作栈。
5.在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别进行中序遍历和后序遍历,则具有相同的结果。
6.在顺序表中进行顺序搜索时,若各元素的搜索概率不等,则各元素应按照搜索概率的降序排列存放,则可得到最小的平均搜索长度。
7.在二叉搜索树中,若各结点的搜索概率不等,使得搜索概率越小的结点离树根越近,则得到的是最优二叉搜索树。
8.对于AOE网络,加速任一关键活动都能使整个工程提前完成。
9.直接选择排序是一种稳定的排序方法。
10.闭散列法通常比开散列法时间效率更高。
四、运算题(前2小题,每小题6分,后3小题,每小题8分,共36分)
1.设有一个二维数组A[10][20],按行存放于一个连续的存储空间中,A[0][0]的存储地址是200,每个数组元素占1个存储字,则A[6][2]的存储字地址是多少。
A[6][2]的存储字地址:
2.已知一棵二叉树的中序和后序序列如下,求该二叉树的高度(假定空树的高度为-1)和度为2、度为1及度为0的结点个数。
中序序列:
c,b,d,e,a,g,i,h,j,f
后序序列:
c,e,d,b,i,j,h,g,f,a
高度:
度为2的结点数:
度为1的结点数:
度为0的结点数:
3.假定一组记录为(36,75,83,54,12,67,60,40),将按次序把每个结点插入到初始为空的一棵AVL树中,请回答在插入时需进行“左单旋转”、“右单旋转”、“先左后右双旋转”、“先右后左双旋转”,“不调整”的结点数各是多少?
左单旋转结点个数:
右单旋转结点个数:
先左后右双旋转结点个数:
先右后左双旋转结点个数:
不调整结点个数:
4.已知一个带权图的顶点集V和边集G分别为:
V={0,1,2,3,4,5,6};
E={(0,1)19,(0,2)10,(0,3)14,(1,2)6,(1,5)5,(2,3)26,(2,4)15,(3,4)18,
(4,5)6,(4,6)6,(5,6)12};
试根据迪克斯特拉(Dijkstra)算法求出从顶点0到其余各顶点的最短路径,在下面填写对应的路径长度。
顶点:
0123456
0
路径长度:
5.已知一个数据表为{36,25,25*,62,40,53},请写出在进行快速排序的过程中每次划分后数据表的变化。
(0)[362525*624053]
(1)
(2)
(3)
五、算法分析题(每小题6分,共18分)
1.指出下面算法的功能并求出其时间复杂度。
voidmatrimult(inta[M][N],intb[N][L],intc[M][L])
{//M、N、L均为全局整型量
inti,j,k;
for(i=0;ifor(j=0;jfor(i=0;ifor(j=0;jfor(k=0;kc[i][j]+=a[i][k]*b[k][j];
}
功能为:
时间复杂度为:
2.设有一个求解汉诺塔(Hanoi)的递归算法如下:
voidHANOI(intn,intpeg1,intpeg2,intpeg3){
if(n==1)cout<else{
HANOI(n-1,peg1,peg3,peg2);
cout<HANOI(n-1,peg2,peg1,peg3);
}
}
当使用HANOI(3,1,2,3)进行调用时,给出else子句中的cout语句的输出结果。
3.已知二叉搜索树中的结点类型BinTreeNode定义为:
structBinTreeNode{ElemTypedata;BinTreeNode*left,*right;};
其中data为结点值域,left和right分别为指向左、右子女结点的指针域。
参数t指向一棵二叉搜索树,该树的广义表表示为:
25(10(5,16(12)),40(32(,38)))。
根据下面算法按标号把答案填写到算法后面相应标号的位置。
执行LN(pt,40)调用后返回的值为__
(1)_____。
执行LN(pt,38)调用后返回的值为__
(2)_____。
执行LN(pt,5)调用后返回的值为___(3)_____。
intLN(BinTreeNode*t,ElemTypeX)
{
if(t==NULL)return0;
elseif(t->data==X)return1;
elseif(t->data>X)
return1+LN(t->left,X);
else
return1+LN(t->right,X);
}
(1)
(2)(3)
六、算法设计题(每小题6分,共12分)
1.试编写一个函数,在一个顺序表A中查找出具有最大值和最小值的整数。
函数的原型如下所示,原型的参数表中给出顺序表对象为A,通过算法执行,从参数表中的引用参数Max中得到表中的最大整数,Min中得到表中的最小整数。
注意,函数中可使用顺序表的如下两个公有函数:
intLength();求表的长度;
intgetData(intk);提取第k个元素的值。
#include“SeqList.h”
template
voidFindMaxMin(SeqList&A,int&Max,int&Min);
2.已知二叉树中的结点类型BinTreeNode定义为:
structBinTreeNode{chardata;BinTreeNode*left,*right;};
其中data为结点值域,left和right分别为指向左、右子女结点的指针域,根据下面函数声明编写出判断两棵二叉树是否相等的算法,若相等则返回1否则返回0。
算法中参数T1和T2为分别指向这两棵二叉树根结点的指针。
当两棵树的结构完全相同并且对应结点的值也相同时才被认为相等。
intBTreeEqual(BinTreeNode*T1,BinTreeNode*T2);
中央广播电视大学
计算机科学与技术专业数据结构试题
(2)
参考解答及评分标准
2003年8月
一、单项选择题,在括号内填写所选择的标号(每小题1分,共12分)
1.B2.C3.C4.C5.D6.B
7.D8.C9.B10.C11.D12.D
二、填空题,在横线处填写合适内容(每小题1分,共12分)
1.链接2.动态3.删除4.后出先进
5.递归6.37.右8.左子树
9.210.交换11.O(log2n)12.500
三、判断题,在每小题前面打对号或打叉号(每小题1分,共10分)
1.对2.对3.错4.错5.对
6.对7.错8.错9.错10.错.
四、运算题(前2小题,每小题6分,后3小题,每小题8分,共36分)
1.A[6][2]的存储字地址:
322//6分
答案说明:
按行存储时,计算A[i][j]地址的公式为
LOC(i,j)=LOC(0,0)+(i*n+j)*d
其中首地址LOC(0,0)=200,每个数组元素的存储占用数d=1,二维数组的列数n=20,根据题意,元素A[6][2]的存储地址为
LOC(6,2)=200+(6*20+2)*1=322
2.
高度:
4//2分
度为2的结点数:
3//2分
度为1的结点数:
3//1分
度为0的结点数:
4//1分
3.
左单旋转结点个数:
1//2分
右单旋转结点个数:
0//2分
先左后右双旋转结点个数:
1//2分
先右后左双旋转结点个数:
0//1分
不调整结点个数:
6//1分
4.错1个数值扣2分,最多扣全部8分。
顶点:
0123456
0
16
10
14
25
21
31
路径长度:
5.
(0)[362525*624053]
(1)[25*25]36[624053]//3分
(2)25*2536[5340]62//3分
(3)25*2536405362//2分
五、算法分析题(每小题6分,共18分)
1.
功能为:
矩阵相乘,即a[M][N]×b[N][L]→c[M][L]。
//3分
时间复杂性为:
O(M×N×L)。
//3分
2.
1→2//2分
1→3//2分
2→3//2分
3.
(1)2//2分
(2)4//2分
(3)3//2分
六、算法设计题(每小题6,共12分)
1.请根据完整程度酌情给分
#include“SeqList.h”
template
voidFindMaxMin(SeqList&A,int&Max,int&Min){
Max=Min=A.getData(0);
for(inti=1;iif(A.getData(i)>Max)Max=A.getData(i);
elseif(A.getData(i)}
}
2.渐进给分,如注释。
intBTreeEqual(BinTreeNode*T1,BinTreeNode*T2)
{
//若两棵树均为空则返回1表示相等
if(T1==NULL&&T2==NULL)return1;//1分
//若一棵为空一棵不为空则返回0表示不等
elseif(T1==NULL||T2==NULL)return0;//2分
//若根结点值相等并且左、右子树对应相等则两棵树相等
elseif(T1->data==T2->data&&BTreeEqual(T1->left,T2->left)&&
BTreeEqual(T1->right,T2->right))
return1;//5分
//若根结点值不等或左、右子树对应不等则两棵树不等
else
return0;//6分
}
另一个参考答案:
intBTreeEqual(BinTreeNode*T1,BinTreeNode*T2)
{
//若两棵树均为空或实际上是同一棵树时返回1表示相等
if(T1==T2)return1;//1分
//若一棵为空一棵不为空则返回0表示不等
if(T1==NULL||T2==NULL)return0;//2分
//若根结点值不等返回0表示不等
if(T1->data!
=T2->data)return0;//3分
//若根结点值相等则两棵树是否相等取决于它们的左、右子树是否对应相等
returnBTreeEqual(T1->left,T2->left)&&BTreeEqual(T1->right,T2->right);
//6分
}
中央广播电视大学
计算机科学与技术专业数据结构试题(3)
2003年8月
题号
一
二
三
四
五
六
总分
得分
一、单项选择题,在括号内填写所选择的标号(每小题1分,共12分)
1.下面程序段的时间复杂度为()。
for(inti=0;ifor(intj=0;jA.O(m2)B.O(n2)C.O(m*n)D.O(m+n)
2.在二维数组中,每个数组元素同时处于()个向量中。
A.0个B.1个C.2个D.n个
3.设有两个串t和p,求p在t中首次出现的位置的运算叫做()。
A.求子串B.模式匹配C.串替换D.串连接
4.利用双向链表作线性表的存储结构的优点是()。
A.便于单向进行插入和删除的操作B.便于双向进行插入和删除的操作
C.节省空间D.便于销毁结构释放空间
5.设链式栈中结点的结构为(data,link),且top是指向栈顶的指针。
若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行()操作。
A.top->link=s;B.s->link=top->link;top->link=s;
C.s->link=top;top=s;D.s->link=top;top=top->link;
6.设有一个递归算法如下
intX(intn){
if(n<=3)return1;
elsereturnX(n-2)+X(n-4)+1;
}
试问计算X(X(5))时需要调用()次X函数。
A.2B.3C.4D.5
7.一棵具有35个结点的完全二叉树的高度为()。
假定空树的高度为-1。
A.5B.6C.7D.8
8.向具有n个结点的堆中插入一个新元素的时间复杂度为()。
A.O
(1)B.O(n)C.O(log2n)D.O(nlog2n)
9.在一棵AVL树中,每个结点的平衡因子的取值范围是()。
A.-1~1B.-2~2C.1~2D.0~1
10.一个有n个顶点和n条边的无向图一定是()。
A.连通的B.不连通的C.无环的D.有环的
11.在用Kruskal算法求解带权连通图的最小(代价)生成树时,通常采用一个()辅助结构,判断一条边的两个端点是否在同一个连通分量上。
A.位向量B.堆C.并查集D.生成树顶点集合
12.设有一个含有200个元素的表待散列存储,用线性探查法解决冲突,按关键码查询时找到一个元素的平均探查次数不能超过1.5,则散列表的长度应至少为()。
(注:
平均探查次数的计算公式为Snl={1+1/(1-α)}/2,其中α为装填因子)
A.400B.526C.624D.676
二、填空题,在横线处填写合适内容(每小题1分,共12分)
1.数据结构的逻辑结构包括线性结构和________结构两大类。
2.在程序运行过程中不能扩充的数组是__________分配的数组。
这种数组在声明它时必须指定它的大小。
3.链表只适用于查找。
4.设双向循环链表中每个结点的结构为(data,llink,rli