北京理工大学数据结构作业(全)
北京理工大学《数据结构》试题及答案(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为空的判定条件是( )。
北京理工大学数据结构编程练习答案
1.一元多项式相加(10分)成绩: 10 / 折扣: 0.8题目说明:编写一元多项式加法运算程序。
要求用线性链表存储一元多项式(参照课本)。
该程序有以下几个功能:1. 多项式求和输入:输入三个多项式,建立三个多项式链表Pa、Pb、Pc(提示:调用CreatePolyn(polynomial &P,int m)。
输出:显示三个输入多项式Pa、Pb、Pc、和多项式Pa+Pb、多项式Pa+Pb+Pc (提示:调用AddPolyn(polynomial &Pa, polynomial Pb), 调用PrintPolyn(polynomial P))。
0. 退出输入:根据所选功能的不同,输入格式要求如下所示(第一个数据是功能选择编号,参见测试用例):∙ 1多项式A包含的项数,以指数递增的顺序输入多项式A各项的系数(整数)、指数(整数)多项式B包含的项数,以指数递增的顺序输入多项式B各项的系数(整数)、指数(整数)多项式C包含的项数,以指数递增的顺序输入多项式C各项的系数(整数)、指数(整数)∙0 ---操作终止,退出。
输出:对应一组输入,输出一次操作的结果(参见测试用例)。
∙ 1 多项式输出格式:以指数递增的顺序输出: <系数,指数>,<系数,指数>,<系数,指数>,参见测试用例。
零多项式的输出格式为<0,0>∙0 无输出1.#include<iostream>#include<stdlib.h>using std::cin;using std::cout;using std::endl;struct date{int a;int b;struct date* pnext;};typedef struct date DATE;typedef struct date* PDATE;void output(PDATE p){int f=0;p=p->pnext;while(p!=NULL){if(p->a!=0){f=1;cout<<"<"<<p->a<<","<<p->b<<">";if(p->pnext==NULL)cout<<endl;elsecout<<",";}p=p->pnext;}if(f==0)cout<<"<0,0>"<<endl;}void add(PDATE a,PDATE b,PDATE c){PDATE p1,p2,p3;p1=a;p2=b;p3=c;if(p1!=NULL) p1=p1->pnext; //skip head if(p2!=NULL) p2=p2->pnext;while((p1!=NULL)&&(p2!=NULL)){if(p1->b>p2->b){p3->pnext=(PDATE)malloc(sizeof(DATE));p3=p3->pnext;p3->a=p2->a;p3->b=p2->b;p3->pnext=NULL;p2=p2->pnext;}else if(p1->b<p2->b){p3->pnext=(PDATE)malloc(sizeof(DATE));p3=p3->pnext;p3->a=p1->a;p3->b=p1->b;p3->pnext=NULL;p1=p1->pnext;}else{p3->pnext=(PDATE)malloc(sizeof(DATE));p3=p3->pnext;p3->a=p1->a+p2->a;p3->b=p1->b;p3->pnext=NULL;p1=p1->pnext;p2=p2->pnext;}}//end whileif(p1==NULL)p3->pnext=p2;if(p2==NULL)p3->pnext=p1;}int main(){int flag;int n;PDATE P[6]={NULL};PDATE p=NULL;for(int i=0;i<6;i++){P[i]=(PDATE)malloc(sizeof(DATE));P[i]->a=0;P[i]->b=0;P[i]->pnext=NULL;}cin>>flag;if(flag==1){for(int i=1;i<4;i++){p=P[i];cin>>n;while(n--!=0){p->pnext=(PDATE)malloc(sizeof(DATE));p=p->pnext;cin>>p->a>>p->b;p->pnext=NULL;}output(P[i]);}}add(P[1],P[2],P[4]);output(P[4]);add(P[4],P[3],P[5]);output(P[5]);}0 约瑟夫问题(10分)成绩: 10 / 折扣: 0.80 约瑟夫问题成绩10分折扣0.8(本题要求用循环链表实现)0 ,1, 2, 3题,只能选做三题.约瑟夫问题是一个经典的问题。
奥鹏北理工《数据结构与算法》在线作业标准答案
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归并排序
数据结构1800题(答案全)
一、选择题1. 算法的计算量的大小称为计算的(B )。
【北京邮电大学2000 二、3 (20/8分)】A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于(C )【中科院计算所1998 二、1 (2分)】A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性【南京理工大学1999 一、1(2分)【武汉交通科技大学1996 一、1(4分)】4.一个算法应该是()。
【中山大学1998 二、1(2分)】A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A 和C.5. 下面关于算法说法错误的是()【南京理工大学2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()【南京理工大学2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
【武汉交通科技大学1996 一、4(2分)】A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
【北方交通大学2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构()?【北方交通大学2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?()【北方交通大学2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为()【北京工商大学2001 一、10(3分)】FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A.O(2n) B.O(n) C.O(n2) D.O(log2n)12.程序段FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中n为正整数,则最后一行的语句频度在最坏情况下是()A. O(n)B. O(nlogn)C. O(n3)D. O(n2) 【南京理工大学1998一、1(2分)】13.以下哪个数据结构不是多型数据类型()【中山大学1999 一、3(1分)】A.栈B.广义表C.有向图D.字符串14.以下数据结构中,()是非线性数据结构【中山大学1999 一、4】A.树B.字符串C.队D.栈15. 下列数据中,()是非线性数据结构。
北理工《数据结构与算法》在线作业-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
北京理工大学数据结构试题及答案
北京理工大学数据结构 10 年期末试题数据结构试卷(一)、单选题(每题 2 分,共 20 分)1. 栈和队列的共同特点是 ()。
A. 只允许在端点处插入和删除元素B. 都是先进后出C. 都是先进先出D. 没有共同点2. 用链接方式存储的队列,在进行插入运算时 ().A. 仅修改头指针B. 头、尾指针都要修改C.仅修改尾指针D.头、尾指针可能都要修改10.设有 6个结点的无向图,该图至少应有 ()条边才能确保是一个连通图。
A.5B.6C.7D.8二、填空题(每空 1 分,共 26 分)1. 通常从四个方面评价算法的质量: ____________ 、 ________ 、 ________ 和 __________ 。
2. 一个算法的时间复杂度为(n 3+n 2log 2n +i4n )/n 2,其数量级表示为 ____________ 。
3. 假定一棵树的广义表表示为A ( C ,D ( E ,F ,G ),H ( I ,J )),则树中所含的结点数为 __________ 个,树的深度为 ____________ 树的度为 __________ 。
4. 后缀算式 9 2 3 +- 10 2 / -的值为 _________ 。
中缀算式( 3+4X ) -2Y/3 对应的后缀算式 为 ________________________________ 。
5.若用链表存储一棵二叉树时, 每个结点除数据域外, 还有指向左孩子和右孩子的两个指 针。
在这种存储结构中, n 个结点的二叉树共有 ___________ 个指针域,其中有 ________ 个 指针域是存放了地址,有 __________________ 个指针是空指针。
3. 4. 5. 以下数据结构中哪一个是非线性结构? ()A. 队列B. 栈C. 线性表D. 二叉树设有一个二维数组 A [m ][n ],假设A [0][0]存放位置在644伽A [2][2]存放位置在676(io ), 每个元素占一个空间,问A .688B . 树最适合用来表示 (A.有序数据元素A [3][3](IO )存放在什么位置?脚注(io 表示用10进制表示。
17秋北理工《数据结构与算法》在线作业
A.有序
B.无序
C.既可有序也可无序
正确答案:A??????满分:2.5??分
2.??如果想在4092个数据中只需要选择其中最小的5个,采用()方法最好。
A.冒泡排序
B.堆排序
C.锦标赛排序
D.快速排序
正确答案:B??????满分:2.5??分
正确答案:A??????满分:2.5??分
8.??顺序查找适合于存储结构为()的查找表。
A.压缩存储
B.散列存储
C.索引存储
D.顺序存储或链式存储
正确答案:D??????满分:2.5??分
9.??从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为()排序法。
D. 15
正确答案:B??????满分:2.5??分
22.??n个顶点的连通图至少有()条边。
A. n-1
B. n
C. n+1
D. 0
正确答案:A??????满分:2.5??分
23.??稀疏矩阵一般的压缩存储方法有两种,即()。
A.二维数组和三维数组
B.三元组表和散列表
C.三元组表和十字链表
D.散列表和十字链表
A. n/2
B. n
C. (n+1)/2
D. n+1
正确答案:B??????满分:2.5??分
16.??下列说法正确的是()
A.堆栈是在两端操作、先进后出的线性表
B.堆栈是在一端操作、先进后出的线性表
C.队列是在一端操作、先进先出的线性表
D.队列是在两端操作、后进先出的线性表
北京理工大学2014-2015学年数据结构期末考试卷
北京理工大学2014-2015学年数据结构期末考试卷北京理工大学2014-2015学年第一学期《数据结构》期末考试试题(A)一、选择题(24分)1,下面关于线性表的叙述错误的是()。
(A)线性表采用顺序存储必须占用一片连续的存储空间(B)线性表采用链式存储不必占用一片连续的存储空间(C)线性表采用链式存储便于插入和删除操作的实现(D)线性表采用顺序存储便于插入和删除操作的实现2,设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有()个空指针域。
(A)2m-1(B)2m(C)2m+1(D)4m3,设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为()(A)R-F(B)F-R(C)(R-F+M)%M(D)(F-R+M)%M4,设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为()。
(A)BADC(B)BCDA(C)CDAB(D)CBDA5,设某完全无向图中有n个顶点,则该完全无向图中有()条边。
(A)n(n-1)/2(B)n(n-1)(C)n2(D)n2-1,6,设某棵二叉树中有2000个结点,则该二叉树的最小高度为()(А)9(B)10(C)11(D)127,设某有向图中有n个顶点,则该有向图对应的邻接表中有()个表头结点。
(A)n-1(B)n(C)n+1(D)2n-18,设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为()。
(A)2,3,5,8,6(B)3,2,5,8,6(C)3,2,5,6,8(D)2,3,6,5,8二、填空题(24 分)1,为了能有效地应用HASH查找技术,必须解决的两个问题是________________和________________________。
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. 堆排序。
北理工大数据结构作业4
第七章作业1、已知有向图,请给出该图的(1) 每个顶点的入/出度;(2) 邻接矩阵;(3) 邻接表;1 2 3 4 56(4) 逆邻接表。
1 2 3 4 5 62、请对下列无向带权图进行操作:(1) 写出它的邻接矩阵,并按普里姆算法求最小生成树;邻接矩阵:普里姆算法求最小生成树:(2)写出它的邻接表,并按克鲁斯卡尔算法求最小生成树;邻接表:克鲁斯卡尔算法求最小生成树:3、请设计算法,由依次输入的顶点数目、弧数目、各顶点的信息和各条弧的信息建立有向图的邻接表。
#define MAX_VERTEX_NUM 20typedef struct ArcNode{int adjvex;struct ArcNode *nextarc;InfoType *info;}ArcNode;typedef struct VNode{VertexType data;ArcNode *firstarc;}Vnode,AdjList[MAX_VERTEX_NUM];typedef struct {AdjList vertices;int vexnum,arcnum;int kind;}ALGraph;Status CreateAdjList(ALGraph &G){int i,j,k;ArcNode p;VertexType v1,v2;InfoType x;scanf(&G.vexnum,&G.arcnum);//输入顶点数、边数for(i=0;i<G.vexnum;++i) //构造顶点数组{scanf(&G.vertices[i].data);G.vertices[i].firstarc=NULL;}for(k=0;k<G. arcnum;++k) //输入各边构造邻接表{scanf(&v1,&v2,&x);//输入一条边依附的弧尾顶点v1、弧头顶点v2、权值x i=LocateVex(G,v1);j=LocateVex(G,v2);p= (ArcNode*)malloc(sizeof(ArcNode))p->adjvex=j;p->info=x;p->nextarc=G.vertices[i].firstarc;//将p逆向插入链表G.vertices[i] G.vertices[i].firstarc=p;}return OK;}// CreateAdjList。
2023年北理工春秋数据结构与算法在线作业
一、单项选择题(共40道试题, 共100分。
)V1.3个结点旳无向完全连通图至少有()条边。
A.3B.4C.5D.62.设有一种二维数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)3.具有n个顶点旳有向完全图有()条弧。
A.nB.n*(n-1)C.n*(n+1)D.n*n4.队列旳操作特点是()。
A.先进先出B.后进先出D.只能从队尾出队5.一种栈旳入栈序列是abcde, 则栈旳不也许旳输出序列是()。
A.edcbaB.decbaC.dceabD.abcde6.某二叉树旳前序和后序序列恰好相似, 则该二叉树一定是()旳二叉树。
A.空或只有一种结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子7.学习数据构造重要目旳是()。
A.处理数值计算问题B.研究程序设计技巧C.选用合适数据构造, 写出更有效旳算法D.是计算机硬件课程旳基础8.任何一种无向连通图旳最小生成树()。
A.只有一棵B.有一棵或多棵D.也许不存在9.栈是一种()旳数据构造。
A.存取受限旳线性构造B.存取不受限旳线性构造C.存取受限旳非线性构造D.存取不受限旳非线性构造10.线性表采用链式存储时, 结点旳存储地址()A.必须是不持续旳B.持续与否均可C.必须是持续旳D.和头结点旳存储地址相持续11.一棵高度(假定树根结点为第0层)为4旳完全二叉树中旳结点数至少为()。
A.15B.16C.17D.3112.次序查找适合于存储构造为()旳查找表。
A.压缩存储B.散列存储D.次序存储或链式存储13.设连通图G中旳边集E={(a, b), (a, e), (a, c), (b, e), (e, d), (d, f), (f, c)}, 则从顶点a出发可以得到一种深度优先遍历旳顶点序列为()A.abedfcB.acfebdC.aebdfcD.aedfcb14.评价排序算法好坏旳原则重要是()。
北理工大数据结构作业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)。
北理工《数据结构与算法》在线作业满分答案
北理工《数据结构与算法》在线作业满分答案
北理工《数据结构与算法》在线作业
试卷总分: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章绪论
第1章绪论一、选择题1.数据结构被形式定义为(D,S),其中D是()的有限集合,S是D上的()有限集合。
A、算法B、数据元素C、数据操作D、逻辑关系E、操作F、映象G、存储H、关系2.数据结构是一门研究非数值计算的程序设计问题中计算机的( (1) )以及它们之间的( (2) )和运算的学科。
(1)A、操作对象B、计算方法C、逻辑存储D、数据映象(2)A、结构B、关系C、运算D、算法3.算法分析的目的是(),算法分析的二个主要方面是()。
A、给出数据结构的合理性B、研究算法中输入输出的关系C、空间复杂性和时间复杂性D、分析算法的效率以求改进E、正确性和简明性F、分析算法的易懂性和文档性4.在数据结构中,从逻辑上可以把数据结构分成()。
A、动态和静态结构B、紧凑接和非紧凑结构C、线性与非线性结构D、内部结构和外部结构5.计算机算法指的是(),它必具备输入、输出和()5 个特性。
A、计算方法B、排序方法C、解决问题的有限运算序列D、可行性、可移植性和可扩充性E、可行性、确定性和有穷性6.线性表的顺序存储结构是一种()的存储结构,线性表的链式存储结构是一种()。
A、随机存取B、顺序存取C、索引存取D、散列存取7.算法的时间复杂度取决于()。
A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态8.线性表若采用链表存储结构时,要求内存中可用存储单元的地址()。
A、必须是连续的B、部分地址必须是连续的C、一定是不连续的D、连续不连续都可以9.在以下的叙述中,正确的是()。
A、线性表的顺序存储结构优于链式存储结构B、二维数组是它的每个数据元素为一个线性表的线性表C、栈的操作方式是先进先出D、队列的操作方式是先进后出10.根据数据元素之间关系的不同特性,以下四类基本的逻辑结构反映了四类基本的数据组织形式。
以下解释错误的是 ( )。
A、集合中任何两个结点之间都有逻辑关系但组织形式松散B、线性结构中结点按逻辑关系依次排列形成一条"锁链"C、树形结构具有分支、层次特性,其形态有点像自然界中的树D、图状结构中的各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接11.以下说法正确的是( )。
最新北京理工大学级数据结构b试题(a卷)-答案
一、选择题1、从逻辑结构上可以把数据结构分为【 C 】。
A、动态结构和静态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构2、在一个长度为n的顺序存储的线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移【 B 】个元素。
A、n-iB、n-i+1C、n-i-1D、i3、链表结构不具有下列【 B 】特点。
A、插入和删除无需移动元素B、可随机访问链表中的任意元素C、无需实现分配存储空间D、所需空间与结点个数成正比。
4、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行【C】。
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;5、一个栈的入栈序列是1,2,3,4,5,则栈不可能输出的序列是【 C 】。
A、54321B、45321C、43512D、123456、判断一个队列Q(元素最多为M个)为空的条件是【 C 】。
A、Q->rear – Q->front = MB、Q->rear – Q->front -1 ==MC、Q->rear == Q->frontD、Q->rear + 1 == Q->front7、在一个链队列中,假设f和r分别指向队首和队尾,则插入s所指结点的运算是【 A 】。
A、r->next = s; r=s;B、f->next = s; f=s;C、s->next = r; r=s;D、s->next = f; f=s;8、深度为5的二叉树至多有【 A 】个结点。
A、31B、32C、16D、109、在一非空二叉树的中序遍历序列中,根结点的右边【 A 】。
北京理工大学数据结构作业(全)
北京理工大学数据结构作业(全)北理工数据结构作业第二章作业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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ 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、假设一棵二叉树的层序序列为 ABCDEFGHIJ 和中序序列为 DBGEHJACIF。清画出该树 (题集 6.29)。
A
B
C
D
E
F
G
H
I
J
3、假设二叉树如下,请分别写出先序、中序和后序遍历结果,并画出该二叉树对应的森林。
A
B
C
D
E
F
G
H
先序遍历:ABDGCEFH 中序遍历:DGBAECHF 后序遍历:GDBEHFCA
北理工数据结构作业 第二章作业
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);
5、 算法设计。请设计一个算法,实现单链表的原地逆置。
typedef struct LNode{ ElemType data; struct LNode *next;
}LNode,*Linklist; void LinkReverse(Linklist &L){ Linklist p,q; p=L﹣>next;
5、 简述下列算法的功能(栈和队列的元素类型均为 int)。(题集 3.13) void algo3(Queue &Q) { Stack S; int d; InitStack (S); while ( ! QueueEmpt(Q) ) { DeQueue(Q, d); Push(S, d); } while ( ! StackEmpty(S) ) { Pop(S, d); EnQueue(Q, d);
∞
∞
∞
6
3
∞
2
∞
g
∞
∞
∞
5
∞
2
∞
6
h
∞
∞
5
4
∞
∞
6
∞
普里姆算法求最小生成树:
a
a
3 c
b 4
b
4
5
a
a
d
3 c
3 c
b
4
5
a
3 c
d 4 h
b
4
5
a
3 c
d 5
4
g
h
b
f
4
5
a
3 c
d
2
5
4
g
h
b
4
5
e
3
f
a
3 c
d
2
5
4
g
h
(2)写出它的邻接表,并按克鲁斯卡尔算法求最小生成树;
邻接表:
4 a
3
typedef struct{ ElemType *elem; int length; int listsize;
}Sqlist; void ListReverse_Sq(Sqlist &L){ int i, j, x; for(i=0,j=L.length-1;i<j;i++,j--){ x=L.elem[j]; L.elem[j]=a.elem[i]; L.elem[i]=x;} }
L﹣>next=NULL;
while(p){
q=p;
p=p﹣>next;
q﹣>next=L﹣>next;
L﹣>next=q;
}
return L;
}
第三章作业
1、写出下列程序段的输出结果(题集 3.2)。 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); } 结果:stack
3、 算法设计。设顺序表 va 中的数据元素递增有序,请设计一算法,将 x 插入到顺序表的 适当位置,以保持该表的有序性。(题集 2.11)
typedef struct{
ElemType *elem;
int length;
int listsize;
}Sqlist;
Status ListInsert_Sq(Sqlist &va , ElemType x){
Status CreateAdjList(ALGraph &G) {
int i,j,k; ArcNode p; VertexType v1,v2; InfoType x;
scanf(&G.vexnum,&G.arcnum);//输入顶点数、边数
for(i=0;i<G.vexnum;++i) //构造顶点数组 { scanf(&G.vertices[i].data); G.vertices[i].firstarc=NULL; }
}
实现栈中元素的逆置 (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); }
第七章作业
1、已知有向图,请给出该图的 (1) 每个顶点的入/出度;
顶点
入度
出度
1
3
0
2 3 4 5 6
(2) 邻接矩阵;
0
0
1
0
0
1
0
0
1
0
1
1
(3) 邻接表;
1
1
∧
2
2
4
3
3
6
4
4
6
5
5
1
2
2
1
2
1
3
2
1
2
3
0
0
0
0
0
1
0
0
0
0
0
1
1
0
1
1
0
0
0
0
0
0
1
0
1
∧
2
∧
5
3
∧
6
6
5
2
1
∧
(4) 逆邻接表。(题集 7.1)
11
6
5
2
∧
22 33 44
6
4
∧
2
∧
3
∧
55
6
66
4
4
∧
3
∧
1
5
6
2
4
3
2、 请对下列无向带权图进行操作:(题集 7.7)。 (1)写出它的邻接矩阵,并按普里姆算法求最小生成树;
邻接矩阵:
a
b
c
d
e
f
g
h
a
∞
4
3
∞
∞
∞
∞
∞
b
4
∞
5
5
9
∞
∞
∞
c
3
5
∞
5
∞
∞
∞
5
d
∞
5
5
∞
7
6
5
4
e
∞
9
∞
7
∞
3
∞
∞
f
if(va.length==va.listsize) return ERROR;
for(i=va.length-1;i>=0&&x<va.elem[i];i--) va.elem[i+1]=va.elem[i];