北理工《实用数据结构与算法》在线作业
北京理工大学《数据结构》试题及答案(B卷)

一、单项选择题1.算法必须具备的三个特性是( )。
A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性D.易读性、稳定性、安全性2.下列数据中,( )是非线性数据结构。
A.栈B.队列C.完全二叉树D.顺序表3.算法分析的两个方面是( )。
A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性4.非空的循环单链表head的尾结点p满足( )。
A.p->next==head B.p->next==NULLC.p==NULL D.p==head5.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是( )。
A.p->next=s;s->next=p->next; B.s->next=p->next;p->next=s;C.p->next=s;p->next=s->next; D.p->next=s->next;p->next=s;6.按照二叉树的定义,具有3个结点的二叉树有( )种。
A.3 B.4C.5 D.67.在一个有向图中,所有顶点的入度之和是所有顶点的出度之和的( )倍。
A.1/2 B.1C.2 D.48.二叉排序树是( )。
A.每一分支结点的度均为2的二叉树B.中序遍历得到一升序序列的二叉树C.按从左到右顺序编号的二叉树D.每一分支结点的值均小于左子树上所有结点的值,大于右子树上所有结点的值9.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是( )。
A.1和 5 B.2和4C.4和2 D.5和110.下列说法中正确的是( )。
A.堆栈是在两端操作、先进后出的线性表B.堆栈是在一端操作、先进先出的线性表C.队列是在一端操作、先进先出的线性表D.队列是在两端操作、先进先出的线性表11.不带头结点的单链表head为空的判定条件是( )。
奥鹏北理工《数据结构与算法》在线作业标准答案

C数组的读、写运算只能读取或修改一个数据元素的一部分
D数组的读、写运算只能读取或修改一个数据元素整体
【答案】:B
14.用链接方式存储的队列,在进行插入运算时()。
【选项】:
A仅修改头指针
B头、尾指针都要修改
C仅修改尾指针
D头、尾指针可能都要修改
D队列是在两端操作、后进先出的线性表
【答案】:
3.以下关于线性表的说法不正确的是()。
【选项】:
A线性表中的数据元素可以是数字、字符、记录等不同类型
B线性表中包含的数据元素个数不是任意的
C线性表中的每个结点都有且只有一个直接前趋和直接后继
D存在这样的线性表:表中各结点都没有直接前趋和直接后继
【答案】:C
【选项】:
A栈顶
B栈底
C任意位置
D指定位置
【答案】:A
32.下列排序方法中,排序趟数与序列的原始状态有关的方法是()。
【答案】:D
15.下列说法哪个是不正确的()。
【选项】:
A快速排序属于不稳定排序。
B希尔排序属于不稳定排序。
C直接插入排序属于不稳定排序。
D堆排序属于不稳定排序。
【答案】:
16.设有一个二维数A[m][n],以行序为主序存储。假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,则A[4][5]在()位置,(10)表明用10进数表示。
D选择排序
【答案】:C
29.当待排序列基本有序时,下列排序方法中()最好。
【选项】:
A直接插入排序
B快速排序
C堆排序
D归并排序
北京理工大学《数据结构与算法设计》实验报告完整版

《数据结构与算法设计》实验报告——实验一学院:班级:学号:姓名:一、实验目的1.通过实验实践、巩固线性表的相关操作;2.熟悉VC环境,加强编程、调试的练习;3.用C语言编写函数,实现循环链表的建立、插入、删除、取数据等基本操作;4.理论知识与实际问题相结合,利用上述基本操作实现约瑟夫环。
二、实验内容1、采用单向环表实现约瑟夫环。
请按以下要求编程实现:①从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。
环表中的结点编号依次为1,2,……,m。
②从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止。
三、程序设计1、概要设计为实现上述程序功能,应用单向环表寄存编号,为此需要建立一个抽象数据类型:单向环表。
(1)、单向环表的抽象数据类型定义为:ADT Joseph{数据对象:D={ai|ai∈ElemSet,i=1,2,3……,n,n≥0}数据关系:R1={ <ai-1,ai>|ai∈D,i=1,2,……,n}基本操作:create(&L,n)操作结果:构造一个有n个结点的单向环表L。
show(L)初始条件:单向环表L已存在。
操作结果:按顺序在屏幕上输出L的数据元素。
Josephf( L,m,s,n)初始条件:单向环表L已存在, s>0,n>0,s<m。
操作结果:返回约瑟夫环的计算结果。
}ADT Joseph(2)、主程序流程主程序首先调用create(&L,n)函数,创建含有m个节点的单向环表L,然后调用show(L)函数,顺序输出链表中的数据,最后调用Josephf( L,m,s,n)函数,依次输出报的数。
(3)、函数调用关系图2、详细设计(1)、数据类型设计typedef int ElemType; //定义元素类型typedef struct Lnode{ElemType data;struct Lnode *next;}Lnode,*Linklist; //定义节点类型,指针类型(2)、操作算法程序实现:void create(Linklist &L,int m){//生成一个具有m个结点的单向环表,环表中的结点编号依次为1,2,……,m Linklist h,p;L=(Linklist)malloc(sizeof(Lnode));L->data = 1;h=L;for(int i=2;i<=m;i++){p = (Linklist)malloc(sizeof(Lnode));p->data = i; //生成新节点,数据为节点编号h->next = p;h = p; //插入链表}h->next = L; //形成循环链表}void show(Linklist L,int m){//从第一个节点开始依次输出节点编号printf("The numbers of the list are: \n"); //提示用户Linklist h;h=L;for(int i=1;i<=m;i++){printf("%d ",h->data);h = h->next;}printf("\n");}void Josephf(Linklist &L,int m,int s,int n){//实现约瑟夫环Linklist h,q;h = L;q = L;while(h->data != s) //定位开始的节点h = h->next;while(q->next!=h) //定位在开始位置的上一个节点q = q->next;for(int j=1;j<=m;j++){int i=1;while(i<n){q=q->next;i++;}printf("%d ",q->next->data); //依次输出报号为n的节点q->next = q->next->next; //删除已输出节点}printf("\n");}(3)、主程序的代码实现:int main(){int s,m,n;Linklist L;printf("请输入节点数m:\n");scanf("%d",&m);create(L,m); //建立循环链表show(L,m); //输出链表数据printf("请输入起始位置s:\n");scanf("%d",&s);printf("请输入报的数n:\n");scanf("%d",&n);Josephf(L,m,s,n); //输出所报数字return 0;}四、程序调试分析1.引用标识符&不符合C语言语法,应使用C++;2.为了实现循环链表,建立时应该不设头结点且第一个节点就存储编号数据;3.删除节点时要定位到前一个指针,所以在定位开始位置后还要再定位到前一个指针;4.输出时要注意增加“ ”(空格)和“\n”(换行),使输出易于辨识。
2022年华北理工大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年华北理工大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。
A.快速排序B.堆排序C.归并排序D.直接插入排序2、下列排序算法中,占用辅助空间最多的是()。
A.归并排序B.快速排序C.希尔排序D.堆排序3、以下数据结构中,()是非线性数据结构。
A.树B.字符串C.队D.栈4、动态存储管理系统中,通常可有()种不同的分配策略。
A.1B.2C.3D.45、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7}, E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>, <V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑序列是()。
A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V76、下列选项中,不能构成折半查找中关键字比较序列的是()。
A.500,200,450,180 B.500,450,200,180C.180,500,200,450 D.180,200,500,4507、下列关于无向连通图特性的叙述中,正确的是()。
Ⅰ.所有的顶点的度之和为偶数Ⅱ.边数大于顶点个数减1 Ⅲ.至少有一个顶点的度为1A.只有Ⅰ B.只有Ⅱ C.Ⅰ和Ⅱ D.Ⅰ和Ⅲ8、一棵非空的二叉树的前序序列和后序序列正好相反,则该二叉树一定满足()。
A.其中任意一个结点均无左孩子B.其中任意一个结点均无右孩子C.其中只有一个叶结点D.其中度为2的结点最多为一个9、每个结点的度或者为0或者为2的二叉树称为正则二叉树。
北理工《数据结构与算法》在线作业-0004【20春答案47118】

C.数据元素的个数不同 D.逻辑结构不同
25.若构造一棵具有n个结点的二叉排序树,最坏情况下,其深度不会超过。 A.n/2 B.n C.n1/2 D.n1
26.线性链表是通过方式表示元素之间的关系 A.后继元素地址 B.元素的存储顺序 C.左、右孩子地址 D.元素的相对存储位置
8.若某线性表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用哪一 种存储结构算法的时间效率最高
A.单链表 B.给出表头指针的单循环链表 C.双向链表 D.给出表尾指针的双向循环链表
9.稀疏矩阵一般的压缩存储方法有两种,即。 A.二维数组和三维数组 B.三元组表和散列表 C.三元组表和十字链表 D.散列表和十字链表
32.具有 n 个顶点的有向完全图有条弧。 A.n B.n*n-1
C.n*n1 D.n*n
33.设连通图G中的边集E{a,b,a,e,a,c,b,e,e,d,d,f,f,c},则从顶点a出发可以得到 一种深度优先遍历的顶点序列为 A.abedfc B.acfebd C.aebdfc D.aedfcb
18.数组的数据元素类型DataType可根据实际需要而定义。以下说法完全正确的是 A.数组的读运算可以读取一个数据元素整体,写运算只能修改一个数据元素的一部分 B.数组的读、写运算可以读取或修改一个数据元素的一部分或一个整体 C.数组的读、写运算只能读取或修改一个数据元素的一部分 D.数组的读、写运算只能读取或修改一个数据元素整体
19.是HASH查找的冲突处理方法。 A.求余法 B.平方取中法 C.二分法 D.开放定址法
20.对线性表进行二分查找时,要求线性表必须。 A.以顺序方式存储 B.以链接方式存储 C.以顺序方式存储,且结点按关键字有序排列 D.以链接方式存储,且结点按关键字有序排列
奥鹏北理工《数据结构与算法》在线作业1标准答案

B.链式存储结构
C.线性链表
D.栈
正确答案:A
13.以下关于线性表的说法不正确的是()。
A.线性表中的数据元素可以是数字、字符、记录等不同类型
B.线性表中包含的数据元素个数不是任意的
C.线性表中的每个结点都有且只有一个直接前趋和直接后继
D.存在这样的线性表:表中各结点都没有直接前趋和直接后继
正确答案:A
20.设有50行60列的二维数组A[50][60],其元素长度为4字节,按行优先顺序存储,基地址为200,则元素A[18][25]的存储地址为()。
A.3700
B.4376
C.3900
D.4620
正确答案:D
21.在线性表顺序存储结构下,在第i个元素之前插入新元素一般需要()
A.移动元素
A.692(10)
B.626(10)
C.709(10)
D.724(10)
正确答案:C
8.具有2000个结点的二叉树,其高度至少为()。
A.9
B.10
C.11
D.12
正确答案:C
9.若已知一棵二叉树先序序列为ABCDEFG,中序序列为CBDAEGF,则其后序序列为()。
A.CDBGFEA
B.CDBFGEA
A.只有一棵
B.有一棵或多棵
C.一定有多棵
D.可能不存在
正确答案:B
28.设有7000个无序的元素,希望用最快的速度挑选出其中前5个最大的元素,最好选用()法。
A.冒泡排序
B.快速排序
C.堆排序
D.基数排序
正确答案:C
29.一个栈的入栈序列是abcde,则栈的不可能的输出序列是()。
A.edcba
北理网上作业数据结构与算法

范文范例 精心整理 在线作业自动判卷 20171119题目类型分正确答案 你的答案 批改值评价排序算法好坏的标准主要是( )。
单选题 10.0 4 × 已知一栈的进栈序列为: 1234,则下列序列中不可能的出栈序 单选题 10.04× 列是( )。
在数据结构中,与所使用的计算机无关的是数据的( )10.0 1× 结构单选题在线性表顺序存储结构下,在第i 个元素之前插入新元素一般 单选题 10.0 1× 需要 ()线性表的顺序存储结构是一种()的存储结构。
单选题 10.0 1 × 以下关于线性表的说法不正确的是()。
单选题 10.03× 队列是一种( )。
单选题 10.01 × 在表达式求值算法中,需要用几个栈? 单选题 10.03 ×队列的操作特点是( )。
单选题 10.01 × 下列不属于栈基本运算的是( )。
单选题 10.02 ×本次作业总分值 :100.0 得分 :0.0 正确的题数: 0 题目总数:10 正确率 :0.0%在线作业自动判卷题目类型分正确答案 你的答案 批改值在数据结构中,与所使用的计算机无关的是数据的( ) 10.01 结构单选题 ×学习数据结构主要目的是( )。
单选题10.03× A 算法的时间复杂度为 O (n 3 ),B 算法的时间复杂度为 O ( 2n ),10.02× 则说明( )。
单选题若某线性表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用哪一种存储结构算法的时间效 单选题10.04× 率最高 ?线性表的顺序存储结构是一种( )的存储结构。
单选题10.0 1 × 用线性链表存储线性表时,要求存储空间 单选题10.02×栈与一般的线性表的区别在于()。
单选题10.0 2 ×栈是一种()的数据结构。
北理工数据结构实验二

《数据结构与算法设计》实验报告——实验二学院:班级:学号:XX:一、实验目的1.通过实验实践、巩固栈的相关操作;2.熟悉VC环境,加强编程、调试的练习;3.用C语言实现栈的抽象数据类型,实现栈的建立、进栈、出栈、取数据等基本操作;4.用C语言实现判断运算符优先级、表达式求值等基本操作;5.理论知识与实际问题相结合,利用上述基本操作实现简单计算器。
二、实验内容1、简单计算器。
请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。
要求:①从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志。
②输入表达式中的数值均为大于等于零的整数。
中间的计算过程如果出现小数也只取整。
例如,输入:4+2*5= 输出:14输入:(4+2)*(2-10)=输出:-48三、程序设计1、概要设计为实现上述程序功能,应用栈存储运算符和操作数,为此需要建立一个抽象数据类型:栈。
(1)、栈的抽象数据类型定义为:ADT Stack{数据对象:D={ai|ai∈ElemSet,i=1,2,3……,n,n≥0}数据关系:R1={ <ai-1,ai>|ai∈D,i=1,2,……,n}基本操作:InitStack(&S)操作结果:创建一个空栈S。
Push(&S, e)初始条件:栈S已存在操作结果:插入运算符e作为新的栈顶元素GetTop(&S)初始条件:栈S已存在且非空操作结果:用e返回寄存运算符栈S的栈顶元素Pop(&S,&e)初始条件:栈S已存在且非空操作结果:删除寄存运算符栈S的栈顶元素Operate(a,theta,b)初始条件:a,b为整数,theta为运算符操作结果:返回a与b运算的结果Precede(d,c)初始条件:d,c为运算符操作结果:若d优先级大于c,返回‘>’;若d优先级小于c,返回‘<’;若d优先级等于c,返回‘=’;EvaluateExpression()初始条件:输入合法的表达式操作结果:返回表达式的值}ADT Stack⑵主程序流程调用EvaluateExpression()函数计算表达式的值,并将结果输出在屏幕上。
2022年北京理工大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年北京理工大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、下列说法不正确的是()。
A.图的遍历是从给定的源点出发每个顶点仅被访问一次B.遍历的基本方法有两种:深度遍历和广度遍历C.图的深度遍历不适用于有向图D.图的深度遍历是一个递归过程2、下列排序算法中,占用辅助空间最多的是()。
A.归并排序B.快速排序C.希尔排序D.堆排序3、线性表的顺序存储结构是一种()。
A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构4、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7}, E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>, <V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑序列是()。
A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V75、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()。
A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都可能要修改D.队头、队尾指针都要修改6、下列关于无向连通图特性的叙述中,正确的是()。
Ⅰ.所有的顶点的度之和为偶数Ⅱ.边数大于顶点个数减1 Ⅲ.至少有一个顶点的度为1A.只有Ⅰ B.只有Ⅱ C.Ⅰ和Ⅱ D.Ⅰ和Ⅲ7、排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。
下列排序方法中,每一趟排序结束时都至少能够确定一个元素最终位置的方法是()。
Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序Ⅳ.堆排Ⅴ.二路归并排序A.仅Ⅰ、Ⅲ、Ⅳ B.仅Ⅰ、Ⅱ、Ⅲ C.仅Ⅱ、Ⅲ、Ⅳ D.仅Ⅲ、Ⅳ、Ⅴ8、一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到()个不同的码字。
北理工《数据结构与算法》在线作业

北理工《数据结构与算法》在线作业试卷总分:100 测试时间:-- 试卷得分:99.5一、单选题(共40 道试题,共99.5 分。
)得分:99.51. 图的存储结构不包括()A. 数组表示B. 邻接表C. 邻接多重表D. 孩子兄弟表示正确答案:D 满分:2.5 分得分:2.52. 当两个元素比较出现反序时就相互交换位置的排序方法称为()。
A. 归并排序B. 选择排序C. 交换排序D. 插入排序正确答案:C 满分:2.5 分得分:2.53. 快速排序属于那种排序类型()。
A. 选择排序B. 插入排序C. 交换排序D. 基数排序正确答案:C 满分:2.5 分得分:2.54. 中序遍历一棵二叉排序树所得到的结点序列是键值的()序列。
A. 递增或递减B. 递减C. 递增D. 无序正确答案:C 满分:2.5 分得分:2.55. 关键路径是指AOE(Activity On Edge)网中()。
A. 最长的回路B. 最短的回路C. 从源点到汇点(结束顶点)的最长路径D. 从源点到汇点(结束顶点)的最短路径正确答案:C 满分:2.5 分得分:2.56. 设有一个二维数A[m][n],以行序为主序存储。
假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,则A[4][5]在()位置,(10)表明用10进数表示。
A. 692(10)B. 626(10)C. 709(10)D. 724(10)正确答案:C 满分:2.5 分得分:2.57. 当待排序列基本有序时,下列排序方法中()最好。
A. 直接插入排序B. 快速排序C. 堆排序。
北京理工大学数据结构与算法设计实验二

《数据结构与算法设计》实验报告——实验二学院:自动化学院班级:06111001学号:**********姓名:宝竞宇一、实验目的掌握栈的建立,输入,删除,出栈等基本操作。
应用栈解决实际问题。
二、实验内容实现简单计算器的功能,请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。
要求支持运算符:+、-、*、/、%、()和=:①从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志;②输入表达式中的数值均为大于等于零的整数,如果中间计算过程中出现小数也只取整进行计算。
例如,输入:4+2*5= 输出:14输入:(4+2)*(2-10)= 输出:-48三、程序设计1、概要设计抽象数据类型定义:两个栈结构,分别用来储存数据和计算符号宏定义:函数“成功”,“失败的返回值”在主程序程序中先依次输入各表达式,存入相应各栈,然后,调用“判断函数”来判断计算符的优先次序,然后再利用计算函数来计算,表达式值。
其中还有,取栈顶元素函数,存入栈函数。
2、详细设计数据类型实现:struct t{ char dat[200];int top;}prt;入栈函数:存入数组,栈顶指针上移void pushd(long int a){ prd.dat[prd.top++]=a;}出栈:取出对应值,栈顶指针下移long int popd( ){ return prd.dat[--prd.top];}比较优先级:建立数组,比较返回大于小于号。
计算函数:以字符型输入,运算符号,用switch来分支计算判断,返回计算数值long int operation ( long int x, long int y, char a){ s witch(a){ case '+': return x+y;case '-': return x-y;case '*': return x*y;case '/': if ( y )return x/y;else{ printf("Divide 0.\n");return 0;}case '%': return (long int) fmod(x,y);case '^': if (y>=0 ) return (long int) pow(x,y);else return (0);default: printf("Error No. 3\n");return 0;}}主程序:在主程序内,以字符串的形式输入表达式,然后分别调用函数存入各相应栈,然后用数组判断,比较运算符的优先顺序。
北京理工大学《数据结构与算法设计》实验报告实验四

《数据结构与算法设计》实验报告——实验四学院:班级:学号:姓名:一、实验目的1.通过实验实践、巩固线性表的相关操作; 2.熟悉VC 环境,加强编程、调试的练习; 3.用C 语言实现线性表的抽象数据类型,实现线性表构造、插入、取数据等基本操作; 4. 理论知识与实际问题相结合,利用上述基本操作实现三种排序并输出。
二、实验内容从键盘输入10个数,编程实现分别用插入排序、交换排序、选择排序算法进行排序,输出排序后的序列。
三、程序设计1、概要设计为了实现排序的功能,需要将输入的数字放入线性表中,进行进一步的排序操作。
(1)抽象数据类型:ADT SqList{数据对象:D={|,1,2,,,0}i i a a ElemSet i n n ∈=≥数据关系:R1=11{,|,,1,2,,}i ii i a a a a D i n --<>∈= 基本操作:InPut(SqList &L)操作结果:构造一个线性表L 。
OutPut(SqList L)初始条件:线性表L 已存在。
操作结果:按顺序在屏幕上输出L 的数据元素。
InsertSort(SqList &L)初始条件:线性表L 已存在。
操作结果:对L 的数据元素进行插入排序。
QuickSort(SqList &L)初始条件:线性表L 已存在。
操作结果:对L 的数据元素进行快速排序。
SelectSort(SqList &L)初始条件:线性表L 已存在。
操作结果:对L 的数据元素进行选择排序。
}ADT SqList⑵主程序流程由主程序首先调用InPut(L)函数创建顺序表,调用InsertSort(L)函数进行插入排序,调用OutPut(L)函数显示排序结果。
调用QuickSort(L)函数进行交换排序,调用OutPut(L)函数显示排序结果。
调用SelectSort(L)函数进行选择排序,调用OutPut(L)函数显示排序结果。
北理工数据结构实验三

北理工数据结构实验三《数据结构与算法设计》实验报告——实验三学院:班级:学号:姓名:一、实验目的1.通过实验实践、巩固二叉树和队列的相关操作;2.熟悉VC环境,加强编程、调试的练习;3.用C语言实现二叉树和队列的抽象数据类型;4.用C语言编写递归函数,实现生成二叉树和遍历二叉树;5.用队列实现二叉树的层次遍历;6.理论知识与实际问题相结合,利用上述基本操作用多种方式遍历二叉树。
二、实验内容1、遍历二叉树。
请输入一棵二叉树的扩展的前序序列,经过处理后生成一棵二叉树,然后对于该二叉树输出前序、中序和后序遍历序列。
2、选做:按层次遍历二叉树。
三、程序设计1、概要设计为实现上述程序功能,需要建立抽象数据类型:二叉树和队列。
(1)、定义抽象数据类型二叉树的抽象数据类型定义为:ADT BinaryTree {数据对象D:D是具有相同特性的数据元素的集合。
数据关系R:若D=Φ,则R=Φ,称BinaryTree为空二叉树;若D≠Φ,则R={H},H是如下二元关系;(1)在D中存在惟一的称为根的数据元素root,它在关系H下无前驱;(2)若D-{root}≠Φ,则存在D-{root}={D1,Dr},且D1∩Dr =Φ;(3)若D1≠Φ,则D1中存在惟一的元素x1,∈H,且存在D1上的关系H1 ?H;若Dr≠Φ,则Dr中存在惟一的元素xr,∈H,且存在上的关系Hr ?H;H={,,H1,Hr};(4)(D1,{H1})是一棵符合本定义的二叉树,称为根的左子树;(Dr,{Hr})是一棵符合本定义的二叉树,称为根的右子树。
基本操作:CreatBiTree(BiTree &T)操作结果:按先序次序建立二叉链表表示的二叉树TPreOrderTraverse(BiTree T)初始条件:二叉树T已经存在操作结果:先序遍历二叉树T ,对每个结点输出其数据元素InOrderTraverse(BiTree T)初始条件:二叉树T已经存在操作结果:中序遍历二叉树T ,对每个结点输出其数据元素PostOrderTraverse(BiTree T)初始条件:二叉树T已经存在操作结果:后序遍历二叉树T ,对每个结点输出其数据元素LevelOrderTraverse(BiTree T)初始条件:二叉树T已经存在操作结果:层次遍历二叉树T ,对每个结点输出其数据元素} ADT BinaryTree队列的抽象数据类型定义为:ADT Stack{数据对象:D={ai|ai∈ElemSet,i=1,2,3……,n,n≥0}数据关系:R1={ |ai∈D,i=1,2,……,n}约定其中a1端为队列头,an端为队列尾基本操作:InitQueue(&Q)功能:构造一个空队列Q。
北理工大数据结构作业2

第三章作业1、写出下列程序段的输出结果。
viod main ( ){ Stack S;char x, y;InitStack (S);x=’c’; y=’k’;Push(S, x); Push(S, ’a’); Push(S, y);Pop(S, x); Push(S, ’t’); Push(S, x);Pop(S, x); Push(S, ’s’);while ( ! StackEmpty(S) ){ Pop(S, y);printf (y);}printf(x);}答:stack2、简述下列算法的功能(栈的元素类型SElemType为int)。
(1)Ststus algo1(Stack S){ int I, n, A[255];n=0;while ( ! StackEmpty(S) ){ n++; Pop(S, A[n]);}for ( i=1; i<=n; i++ )Push(S, A[n]);}答:实现栈中元素的逆置(2)Status algo2(Stack S, int e){ Stack T; int d;InitStack (T);while ( ! StackEmpty(S) ){ Pop(S, d);if ( d!=e ) Push(T, d);}while ( ! StackEmpty(T) ){ Pop (T, d);Push (S, d);}}答:通过栈T的辅助删除栈S中所有值为e的元素3、设有4个元素1、2、3、4依次进栈,而出栈操作可随时进行(进出栈可任意交错进行,但要保证进栈次序不破坏1、2、3、4的相对次序),请写出所有可能的出栈次序。
答:共14种情况,顺序如下:1234,1243,1324,1342,1432,2134,2143,2314,2341,2431,3421,3241,3214,4321。
4、写出下列程序段的输出结果(队列中的元素类型QelemType为char)。
17春北理工《实用数据结构与算法》在线作业

2017秋17春北理工《实用数据结构与算法》在线作业一、单选题(共20 道试题,共40 分。
)1. 具有2000个结点的二叉树,其高度至少为()。
A. 9B. 10C. 11D. 12正确答案:2. 含4个结点(元素值均不相同)的二叉搜索树有()种。
A. 12B. 14C. 5D. 15正确答案:3. 当两个元素比较出现反序时就相互交换位置的排序方法称为()。
A. 归并排序B. 选择排序C. 交换排序D. 插入排序正确答案:4. 对线性表进行二分查找时,要求线性表必须()。
A. 以顺序方式存储B. 以链接方式存储C. 以顺序方式存储,且结点按关键字有序排列D. 以链接方式存储,且结点按关键字有序排列正确答案:5. 设有50行60列的二维数组A[50][60],其元素长度为4字节,按行优先顺序存储,基地址为200,则元素A[18][25]的存储地址为()。
A. 3700B. 4376C. 3900D. 4620正确答案:6. 一棵高度(假定树根结点为第0层)为4的完全二叉树中的结点数最少为()。
A. 15B. 16C. 17D. 31正确答案:7. 根据二叉树的定义可知二叉树共有()种不同的形态。
A. 4B. 5C. 6D. 7正确答案:8. 对哈希(HASH)函数H(k)= k MOD m, 一般来说,m应取()。
A. 素数B. 很大的数C. 偶数D. 奇数正确答案:9. 一个数组第一个元素的存储地址是100,每个数组元素的长度为2,则第5个元素的地址是()。
A. 110B. 108C. 100D. 120正确答案:10. 用链接方式存储的队列,在进行插入运算时()。
A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D. 头、尾指针可能都要修改正确答案:11. 一个栈的入栈序列是abcde,则栈的不可能的输出序列是()。
A. edcbaB. decbaC. dceabD. abcde正确答案:12. 图的存储结构不包括()A. 数组表示B. 邻接表C. 邻接多重表D. 孩子兄弟表示正确答案:13. 有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当采用折半查找值为82的节点时,()次比较后查找成功。
北理工《数据结构与算法》在线作业满分答案

北理工《数据结构与算法》在线作业满分答案
北理工《数据结构与算法》在线作业
试卷总分:100 得分:100
一、单选题
1. 在数据结构中,与所使用的计算机无关的是数据的()结构
A. 逻辑
B. 存储
C. 逻辑和存储
D. 物理
正确答案:A
2.一个n*n对称矩阵,如果以行或列为主序存入内存,则其容量为()。
A. n*n
B. n*n/2
C. n*(n+1)/2
D. (n+1)*(n+1)/2
正确答案:C
3.一个数组第一个元素的存储地址是100,每个数组元素的长度为2,则第5个元素的地址是()。
A. 110
B. 108
C. 100
D. 120
正确答案:B
4.如果结点a有三个兄弟,而且b为a的双亲,则b的度为()。
A. 3
B. 4
C. 5
D. 2
正确答案:B
5. 下面四种内排序方法中,要求容量最大的是()。
A. 插入排序
B. 选择排序
C. 快速排序
D. 归并排序
正确答案:D
6. 采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为()。
A. n
B. n/2
C. (n-1)/2
D. (n+1)/2
正确答案:D
7. 图的存储结构不包括()
A. 数组表示
B. 邻接表
C. 邻接多重表。
北京理工大学数据结构作业(全)

北京理工大学数据结构作业(全)北理工数据结构作业第二章作业1、在什么情况下用顺序表比链表好?(题集2.3)需要对线性表进行随机存取时,顺序表比链表好。
2、已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。
(题集2.7)a.删除P结点的直接后继结点的语句序列是11 3 14。
b.删除P结点的直接前驱结点的语句序列是10 12 8 3 14。
c.删除P结点的语句序列是10 12 7 3 14。
d.删除首元结点的语句序列是12 11 3 14。
e.删除尾元结点的语句序列是12 11 3 14。
(1)p = p->next;(2)p->next = p;(3)p->next = p->next->next;(4)p = p->next->next;(5)while ( p!=NULL ) p=p->next;(6)while ( q->next!=NULL ) { p=q; q=q->next; }(7)while ( p->next!=q ) p=p->next;(8)while ( p->next->next!=q ) p=p->next;(9)while ( p->next->next!=NULL ) p=p->next;(10)q=p;(11)q=p->next;(12)p=l;(13)l=l->next;(14)free(q);3、算法设计。
设顺序表va中的数据元素递增有序,请设计一算法,将x插入到顺序表的适当位置,以保持该表的有序性。
(题集2.11)typedef struct{ElemType *elem;int length;int listsize;}Sqlist;Status ListInsert_Sq(Sqlist &va , ElemType x){if(va.length==va.listsize) return ERROR;for(i=va.length-1;i>=0&&xva.elem[i+1]=x;va.length++;return OK;}4、算法设计。
数据结构与算法在线作业答案

单选题1.邻接表是图的一种____。
A 顺序存储结构B 链式存储结构C 索引存储结构D 散列存储结构单选题2.具有5个顶点的有向完全图有____条弧。
A 10B 16C 20D 25单选题3.链表不具有的特点是_____。
A 可随机访问任一元素B 插入和删除不需要移动元素C 不必事先估计存储空间D 所需空间和线性表长度成正比单选题4.作进栈操作时,应先判断栈是否为_____。
A 空B 满C 上溢D 下溢单选题5.下面关于图的存储的叙述中,哪一个是正确的?A 用相邻矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关B 用相邻矩阵法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关C 用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关D 用邻接表法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关单选题6.当字符序列x5y 作为字符堆栈的输入时,输出长度为3的且可以作为C语言标识符的个数是____。
A 3个B 4个C 5个D 6个单选题7.树最适合用来表示_____。
A 有序数据元素B 无序数据元素C元素之间具有分支层次关系的数据D 元素之间无联系的数据单选题8.线性表按链式方式存储时,每个结点的存储包括_____两部分。
A 数据值与符号B 数据与指针C 数据与表名D 数据项与符号单选题9.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。
这里我们把由树转化得到的二叉树叫做这棵树对应的二叉树。
那么以下结论中_____是正确的。
A 树的先根遍历序列与其对应的二叉树的先序遍历序列相同B 树的后根遍历序列与其对应的二叉树的后序遍历序列相同C 树的先根遍历序列与其对应的二叉树的中序遍历序列相同D 以上都不对单选题10.设深度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为____(注意C和D中h为指数)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北理工《实用数据结构与算法》在线作业一、单选题:1.(单选题)当两个元素比较出现反序时就相互交换位置的排序方法称为()。
(满分A归并排序B选择排序C交换排序D插入排序正确:C2.(单选题)设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为() (满分Afront=front+1Bfront=(front+1)%mCrear=(rear+1)%mDfront=(front+1)%(m+1)正确:D3.(单选题)快速排序方法在()情况下最不利于发挥其长处。
(满分A被排序的数据量太大B被排序数据中含有多个相同值C被排序数据已基本有序D被排序数据数目为奇数正确:C4.(单选题)具有65个结点的完全二叉树其深度为(根的层次号为1)()。
(满分A8B7C6D5正确:5.(单选题)稀疏矩阵一般的压缩存储方法有两种,即()。
(满分A二维数组和三维数组B三元组表和散列表C三元组表和十字链表D散列表和十字链表正确:6.(单选题)从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为()排序法。
(满分:)A插入B选择C交换D二路归并正确:7.(单选题)下列排序方法中效率最高的排序方法是()。
(满分:)A起泡排序B堆排序C快速排序D直接插入排序正确:8.(单选题)栈与一般的线性表的区别在于()。
(满分:)A数据元素的类型不同B运算是否受限制C数据元素的个数不同D逻辑结构不同正确:9.(单选题)图的存储结构不包括() (满分:)A数组表示B邻接表C邻接多重表D孩子兄弟表示正确:10.(单选题)一个数组第一个元素的存储地址是100,每个数组元素的长度为2,则第5个元素的地址是()。
(满分:)A110B108C100D120正确:11.(单选题)具有n个顶点的有向完全图有()条弧。
(满分:)AnBn*(n-1)Cn*(n+1)Dn*n正确:12.(单选题)具有2000个结点的二叉树,其高度至少为()。
(满分:)A9B10C11D12正确:13.(单选题)含4个结点(元素值均不相同)的二叉搜索树有()种。
(满分:)A12B14C5D15正确:14.(单选题)在有序表(3,8,13,15,16,17,21,24,45)中,用二分查找法查找关键字21,所需进行关键字比较的次数为()。
(满分:)A2B3C4D5正确:15.(单选题)数组的数据元素类型DataType可根据实际需要而定义。
以下说法完全正确的是() (满分:)A数组的读运算可以读取一个数据元素整体,写运算只能修改一个数据元素的一部分B数组的读、写运算可以读取或修改一个数据元素的一部分或一个整体C数组的读、写运算只能读取或修改一个数据元素的一部分D数组的读、写运算只能读取或修改一个数据元素整体正确:16.(单选题)下列排序方法中,排序趟数与序列的原始状态有关的方法是()。
(满分:)A选择排序B希尔排序C堆排序D冒泡排序正确:17.(单选题)根据二叉树的定义可知二叉树共有()种不同的形态。
(满分:)A4B5C6D7正确:18.(单选题)设有50行60列的二维数组A[50][60],其元素长度为4字节,按行优先顺序存储,基地址为200,则元素A[18][25]的存储地址为()。
(满分:)A3700B4376C3900D4620正确:19.(单选题)顺序表是线性表的() (满分:)A链式存储结构B顺序存储结构C索引存储结构D散列存储结构正确:20.(单选题)具有线性结构的数据结构是() (满分:)A赫夫曼树B栈C图D树正确:二、多选题:21.(多选题)以下说法错误的是() (满分:)A数据元素是数据的最小单位B数据项是数据的基本单位C数据结构是带有结构的各数据项的集合D数据结构是带有结构的数据元素的集合正确:22.(多选题)对线性表,可进行如下基本操作() (满分:)A随机存取B插入C删除D查找正确:23.(多选题)以下不稳定的排序方法是() (满分:)A快速排序B冒泡排序C希尔排序D堆排序正确:24.(多选题)单链表表示法的基本思想是指针P表示结点间的逻辑关系,则以下说法正确的是()(满分:)A任何指针都不能用打印语句输出一个指针型变量的值B如果要引用(如访问)p所指结点,只需写出p(以后跟域名)即可C若想修改变量p的值(比如让P指向另一个结点),则应直接对p赋值D对于一个指针型变量P的值。
只需知道它指的是哪个结点正确:25.(多选题)下列说法正确的是() (满分:)A栈是限定在表尾进行插入或删除操作的线性表B栈是限定在表头进行插入或删除操作的线性表C对列是先进先出的线性表D栈是后进先出的线性表正确:26.(多选题)图的存储结构有() (满分:)A邻接矩阵B邻接表C数组表示法D十字链表正确:27.(多选题)下面关于求关键路径的说法正确的是() (满分:)A求关键路径是以拓扑排序为基础的B一个事件的最早开始时间同以该事件为尾的弧的活动最早开始时间相同C一个事件的最迟开始时间为以该事件为尾的弧的活动最迟开始时间与该活动的持续时间的差D关键活动一定位于关键路径上正确:28.(多选题)二叉树的遍历方式有() (满分:)A先序遍历B中序遍历C后序遍历D线索遍历正确:29.(多选题)以下说法正确的是() (满分:)A直接插入排序的空间复杂度为O(1)B快速排序附加存储开销为O(log2n)C堆排序的空间复杂度为O(n)D二路归并排序的空间复杂度为O(n)正确:30.(多选题)下面关于哈希(Hash)查找的说法不正确的是() (满分:)A哈希函数构造的越复杂越好,因为这样随机性好,冲突小B除留余数法是所有哈希函数中最好的C不存在特别好与坏的哈希函数,要视情况而定D若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单的将该元素删去即可正确:三、判断题:31.(判断题)快速排序的速度在所有排序方法中为最快,而且所需附加空间也最少。
(满分:) A错误B正确正确:32.(判断题)中序遍历二叉排序树可以得到一个有序的序列。
(满分:)A错误B正确正确:33.(判断题)顺序存储方式只能用于存储线性结构。
(满分:)A错误B正确正确:34.(判断题)若有向图有n个顶点,则其强连通分量最多有n个。
(满分:)A错误B正确正确:35.(判断题)做进栈运算时应先判别,栈是否为空。
(满分:)A错误B正确正确:36.(判断题)任何一棵二叉树中至少有一个结点的度为2。
(满分:)A错误B正确正确:37.(判断题)哈夫曼树是带权路径最短的树,路径上权值较大的结点离根较近。
(满分:)A错误B正确正确:38.(判断题)一个循环链表可以由所给定的头指针或者尾指针惟一地确定。
(满分:)A错误B正确正确:39.(判断题)队列和栈都是运算受限的线性表。
(满分:)A错误B正确正确:40.(判断题)空格也是合法字符,它可以出现在较长的字符串中,也可以单独出现。
(满分:)A错误B正确正确:41.(判断题)用带表头结点的单链表表示队列,则判断队列为空的标准是头指针和尾指针均指向同一个结点。
(满分:)A错误B正确正确:42.(判断题)快速排序是排序算法中平均性能最好的一种排序。
(满分:)A错误B正确正确:43.(判断题)若采用三元组存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算。
(满分:)A错误B正确正确:44.(判断题)二叉树是二叉排序树的充要条件是其任意非叶结点的值均大于其左孩子的值、小于其右孩子的值。
(满分:)A错误B正确正确:45.(判断题)线性表的逻辑顺序与物理顺序总是一致的。
(满分:)A错误B正确正确:46.(判断题)顺序查找法适用于存储结构为顺序或链接存储的线性表。
(满分:)A错误B正确正确:47.(判断题)对于同一组结点,由于建立二叉排序树时插入结点的先后次序不同,所构成的二叉排序树的形态及深度也不同,所以含有n个结点的二叉排序树不唯一。
(满分:)A错误B正确正确:48.(判断题)层次遍历初始堆可以得到一个有序的序列。
(满分:)A错误B正确正确:49.(判断题)哈夫曼树又称为最优二叉树。
(满分:)A错误B正确正确:50.(判断题)在单链表中,要访问某个结点,只要知道该结点的指针即可;因此,单链表是一种随机存取结构。
(满分:)A错误B正确正确:北理工《实用数据结构与算法》在线作业43.19北理工《实用数据结构与算法》在线作业一、单选题:1.(单选题)当两个元素比较出现反序时就相互交换位置的排序方法称为()。
(满分A归并排序B选择排序C交换排序D插入排序正确:C2.(单选题)设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为() (满分Afront=front+1Bfront=(front+1)%mCrear=(rear+1)%mDfront=(front+1)%(m+1)正确:D3.(单选题)快速排序方法在()情况下最不利于发挥其长处。
(满分A被排序的数据量太大B被排序数据中含有多个相同值C被排序数据已基本有序D被排序数据数目为奇数正确:C4.(单选题)具有65个结点的完全二叉树其深度为(根的层次号为1)()。
(满分A8B7C6D5正确:5.(单选题)稀疏矩阵一般的压缩存储方法有两种,即()。
(满分A二维数组和三维数组B三元组表和散列表C三元组表和十字链表D散列表和十字链表正确:6.(单选题)从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为()排序法。
(满分:)A插入B选择C交换D二路归并正确:7.(单选题)下列排序方法中效率最高的排序方法是()。
(满分:)A起泡排序B堆排序C快速排序D直接插入排序正确:8.(单选题)栈与一般的线性表的区别在于()。
(满分:)A数据元素的类型不同B运算是否受限制C数据元素的个数不同D逻辑结构不同正确:9.(单选题)图的存储结构不包括() (满分:)A数组表示B邻接表C邻接多重表D孩子兄弟表示正确:10.(单选题)一个数组第一个元素的存储地址是100,每个数组元素的长度为2,则第5个元素的地址是()。
(满分:)A110B108C100D120正确:11.(单选题)具有n个顶点的有向完全图有()条弧。
(满分:)AnBn*(n-1)Cn*(n+1)Dn*n正确:12.(单选题)具有2000个结点的二叉树,其高度至少为()。
(满分:)A9B10C11D12正确:13.(单选题)含4个结点(元素值均不相同)的二叉搜索树有()种。