北理工数据结构作业4
第七章作业
1、已知有向图,请给出该图的
(1) 每个顶点的入/出度;
(2) 邻接矩阵;
(3) 邻接表;
1 2 3 4 5
6
(4) 逆邻接表。
1 2 3 4 5 6
2、请对下列无向带权图进行操作:
(1) 写出它的邻接矩阵,并按普里姆算法求最小生成树;
邻接矩阵:
普里姆算法求最小生成树:
(2)写出它的邻接表,并按克鲁斯卡尔算法求最小生成树;邻接表:
克鲁斯卡尔算法求最小生成树:
3、请设计算法,由依次输入的顶点数目、弧数目、各顶点的信息和各条弧的信
息建立有向图的邻接表。
#define MAX_VERTEX_NUM 20
typedef 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。
北京理工大学数据结构编程练习答案
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题,只能选做三题.约瑟夫问题是一个经典的问题。
2003-2016年北京理工大学889数据结构考研真题及答案解析 汇编
2017版北京理工大学《889数据结构》全套考研资料我们是布丁考研网北理工考研团队,是在读学长。
我们亲身经历过北理工考研,录取后把自己当年考研时用过的资料重新整理,从本校的研招办拿到了最新的真题,同时新添加很多高参考价值的内部复习资料,保证资料的真实性,希望能帮助大家成功考入北理工。
此外,我们还提供学长一对一个性化辅导服务,适合二战、在职、基础或本科不好的同学,可在短时间内快速把握重点和考点。
有任何考北理工相关的疑问,也可以咨询我们,学长会提供免费的解答。
更多信息,请关注布丁考研网。
以下为本科目的资料清单(有实物图及预览,货真价实):2017年北理工《数据结构》全套资料包含:一、北京理工大学《数据结构》历年考研真题2016年北理工《数据结构》考研真题2015年北理工《数据结构》考研真题2014年北理工《数据结构》考研真题2013年北理工《数据结构》考研真题2008年北理工《数据结构》考研真题2007年北理工《数据结构》考研真题2006年北理工《数据结构》考研真题2005年北理工《数据结构》考研真题2004年北理工《数据结构》考研真题2003年北理工《数据结构》考研真题二、北京理工大学889《数据结构》考研经验总结。
注意了:北理工889数据结构是近几年开始的科目,以前都是跟其他科目综合考试,2008年之后真题为回忆版,请大家了解好了再买,这些都是纯真题,买后不能退款。
三、北理工《数据结构》期末试题10套及答案。
...四、北理工《数据结构》考研复习提纲。
五、北理工《数据结构》考研题库及答案。
六、、严蔚敏《数据结构》全套教学视频48课时。
(电子版)七、、严蔚敏《数据结构》课后习题答案。
以下为截图及预览:2007年真题2016年真题课后习题及答案课后习题及答案2期中期末试卷期中期末试卷答案。
北京理工大学《数据结构》试题及答案(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归并排序
北理工《数据结构与算法》在线作业-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进制表示。
北理工数据结构实验四
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,通力根1保过据护管生高线产中敷工资设艺料技高试术中卷0资不配料仅置试可技卷以术要解是求决指,吊机对顶组电层在气配进设置行备不继进规电行范保空高护载中高与资中带料资负试料荷卷试下问卷高题总中2体2资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况1卷中下安,与全要过,加度并强工且看作尽护下可1都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷编.工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试术写5、卷交重电保底要气护。设设装管备备置线4高、调动敷中电试作设资气高,技料课中并3术试、件资且中卷管中料拒包试路调试绝含验敷试卷动线方设技作槽案技术,、以术来管及避架系免等统不多启必项动要方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对对线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,术用作是金为指属调发隔试电板人机进员一行,变隔需压开要器处在组理事在;前发同掌生一握内线图部槽 纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
北理工大数据结构作业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。
北京理工大学数据结构考研例题解析4
本资料由理硕教育整理,理硕教育是全国唯一专注于北理工考研辅导的学校,相对于其它机构理硕教育有得天独厚的优势。
丰富的理工内部资料资源与人力资源确保每个学员都受益匪浅,确保理硕教育的学员初试通过率89%以上,复试通过率接近100%,理硕教育现开设初试专业课VIP一对一,初试专业课网络小班,假期集训营,复试VIP一对一辅导,复试网络小班,考前专业课网络小班,满足学员不同的需求。
因为专一所以专业,理硕教育助您圆北理之梦。
详情请查阅理硕教育官网第 4 章广义线性表——多维数组和广义表课后习题讲解1. 填空⑴数组通常只有两种运算:()和(),这决定了数组通常采用()结构来实现存储。
【解答】存取,修改,顺序存储【分析】数组是一个具有固定格式和数量的数据集合,在数组上一般不能做插入、删除元素的操作。
除了初始化和销毁之外,在数组中通常只有存取和修改两种操作。
⑵二维数组A中行下标从10到20,列下标从5到10,按行优先存储,每个元素占4个存储单元,A[10][5]的存储地址是1000,则元素A[15][10]的存储地址是()。
【解答】1140【分析】数组A中每行共有6个元素,元素A[15][10]的前面共存储了(15-10)×6+5个元素,每个元素占4个存储单元,所以,其存储地址是1000+140=1140。
⑶设有一个10阶的对称矩阵A采用压缩存储,A[0][0]为第一个元素,其存储地址为d,每个元素占1个存储单元,则元素A[8][5]的存储地址为()。
【解答】d+41【分析】元素A[8][5]的前面共存储了(1+2+…+8)+5=41个元素。
⑷稀疏矩阵一般压缩存储方法有两种,分别是()和()。
【解答】三元组顺序表,十字链表⑸广义表((a), (((b),c)),(d))的长度是(),深度是(),表头是(),表尾是()。
【解答】3,4,(a),((((b),c)),(d))⑹已知广义表LS=(a,(b,c,d),e),用Head和Tail函数取出LS中原子b的运算是()。
