北京科技大学数据结构上机考试
国开期末考试《数据结构与算法》机考试题及答案(第10套)

国开期末考试《数据结构与算法》机考试题及答案(第10套)一、选择题(每题2分,共20分)1. 数据的逻辑结构是指()。
A. 数据元素之间的逻辑关系B. 数据元素本身的特点C. 数据的存储结构D. 数据的加工处理过程答案:A. 数据元素之间的逻辑关系二、填空题(每题2分,共20分)2. 在栈中,最后进入的数据元素总是首先被()。
答案:弹出三、判断题(每题2分,共20分)3. 线性表是一种线性结构。
()答案:正确四、简答题(每题10分,共30分)4. 简述顺序存储结构和链式存储结构的特点。
答案:顺序存储结构:数据元素在物理位置上连续存储,可以通过下标快速访问。
五、编程题(共50分)5. 编写一个函数,实现单链表的排序。
(20分)答案:class ListNode:def __init__(self, value):self.value = valueself.next = Nonedef sort_linked_list(head):if not head or not head.next:return headpivot = head.valueless = less_head = ListNode(None) equal = equal_head = ListNode(None) greater = greater_head = ListNode(None)current = headwhile current:if current.value < pivot:less.next = currentless = less.nextelif current.value == pivot:equal.next = currentequal = equal.nextelse:greater.next = currentgreater = greater.nextcurrent = current.nextless.next = less_head.nextequal.next = equal_head.next greater.next = greater_head.nextreturn merge_sorted_lists(sort_linked_list(less_head.next),sort_linked_list(equal_head.next), sort_linked_list(greater_head.next))def merge_sorted_lists(l1, l2, l3):dummy = ListNode(None)current = dummywhile l1 and l2 and l3:if l1.value < l2.value and l1.value < l3.value:current.next = l1l1 = l1.nextelif l2.value < l1.value and l2.value < l3.value:current.next = l2l2 = l2.nextelse:current.next = l3l3 = l3.nextcurrent = current.nextif l1:current.next = l1 elif l2:current.next = l2 else:current.next = l3 return dummy.next。
北京科技大学C++上机作业答案

特别注意事项:仅供参考1,文件名“40862533_王小小_数学0801_实验1.doc”中的实验1指的是第几次上机实验,与“实验指导书”中的实验几没有关系;2,文件名“40862533_王小小_数学0801_实验1.doc”中的doc是文件扩展名,请注意不要提交如“*******.doc.doc”的文件;3,上机实验作业一律以word形式提交;4,若上机实验有多个作业,请按照下列加粗方式给每个作业命名,如:实验1_1,实验1_25,实验作业的word文件的页眉不可少,请每次注意修改;6,每个实验作业均要给出比较详细的程序说明,且程序说明位于程序之后。
程序说明是特别重点考察的部分,请按照你的理解进行撰写;7,该部分“特别注意事项”可以随同作业一并提交,请提交作业前进行对照。
实验1_1/***********************************程序功能: 输出一个字符串***********************************/#include "stdafx.h"#include<iostream>using namespace std;void main(){cout<<"This is a C++ program.\n";}程序说明:该程序由一个main函数构成,main函数中的语句cout是一个函数调用语句,其基本功能是实现标准的输出。
实验1_2/***********************************程序功能:比较两个数字大小***********************************/#include "stdafx.h"#include <iostream>using namespace std;int max(int,int);//定义main函数void main(){int a,b,c;cout<<"input two number"<<endl;cin>>a>>b;c=max(a,b);cout<<"max="<<c<<endl;}int max(int x,int y)//输入xy 两个参数{int z;if(x>y) z=x;else z=y;//简单的if else语句,通过这语句,将xy中较大的赋给zreturn(z);}程序说明:先是输入两个数字,比较大小,并输出。
数据结构上机考试题目及要求

数据结构上机实验考试标准一、评分标准:1.根据考试完成情况,参考平时上机情况评定优、良、中、及格、不及格5个档。
2.成绩分布比例近似为:优15%、良30%、中30%、及格20%、不及格<10%二、评分原则:1.充分参考平时实验完成情况,结合如下原则给出成绩;2.只完成第一题,成绩为良以下成绩(中、及格),若平时上机情况很好,可以考虑良好;3.两道题都完成,成绩为良及以上(优、良),根据完成质量和完成时间给成绩;4.如未完成任何程序,则不及格(根据平时成绩将不及格率控制在10%以下);三、监考要求:1.考试前,要求学生检查电脑是否工作正常,如果不正常及时解决,待所有考生均可正常考试后再发布试题。
2.平时上机完成的程序可以在考试过程直接调用,在考试开始前复制到硬盘当中,考试过程中可以看教材。
3.考试开始后向学生分发考题的电子文档,同时宣读试题,学生可以通过网络或磁盘拷贝试题。
4.考试开始十五分钟之后把网络断开,学生不得再使用任何形式的磁盘。
5.程序检查时,记录其完成时间和完成情况。
除检查执行情况外,还要求学生对代码进行简要讲解,核实其对代码的理解情况和设计思想,两项均合格方视为试题完成。
6.完成考试的学生须关闭电脑立刻离开考场,考试成绩由教务办统一公布,负责教师不在考试现场公布成绩。
数据结构上机实验考试题目(2011年12月23日)题目1.设C={a1,b1,a2,b2,…,a n,b n}为一线性表,采用带头结点的单链表hc(hc为C链表的头指针)存放,设计一个算法,将其拆分为两个线性表(它们都用带头结点的单链表存放),使得:A={a1,a2,…,a n},B={b n,b n-1,…,b1}。
[例] C链表为:C={1,2,3,4,5,6,7,8,9,10}拆分后的A、B链表如下:A={1,3,5,7,9},B={10,8,6,4,2}。
要求:算法的空间复杂度为O(1)。
即利用C链表原来的空间。
2022年北京科技大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年北京科技大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、用有向无环图描述表达式(A+B)*((A+B)//A),至少需要顶点的数目为()。
A.5B.6C.8D.92、若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。
A.快速排序B.堆排序C.归并排序D.直接插入排序3、线性表的顺序存储结构是一种()。
A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构4、循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是()。
A.(rear-front+m)%mB.rear-front+1C.rear-front-1D.rear-front5、已知有向图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、已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s!=t)时,i=j=5,则下次开始匹配时,i和j的值分别()。
A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=27、下列叙述中,不符合m阶B树定义要求的是()。
A.根结点最多有m棵子树 B.所有叶结点都在同一层上C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接8、已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历结果为()。
北科大数据结构上机题代码

北科大数据结构上机题代码《数据结构》上机题1、输入数据建立单链表,并求相邻两节点data值之和为最大的第一节点。
例如输入:26473 0,建立:所求结果=4 程序结构:类型说明;建表函数:Creatlist(L); 求值函数:Adjmax(L);main( ){ 变量说明;调用Creatlist(L)建表;调用Adjmax(L)求值;打印数据;释放链表空间;Y继续?N停止 } 上机题1:#include #include typedef int datatype;//设当前数据元素为整型 typedef struct node//节点类型 { datatype data;//节点的数据域struct node *next;//节点的后继指针域 }Linknode,*Link;//linknode为节点说明符,link为节点指针说明符 Link Createlist()//创建单链表的算法 { int a,c;float b; Link H,P,r;//H,P,r分别为表头,新节点和表尾节点指针H=(Link)malloc(sizeof(Linknode)); //建立头节点 r=H; do{ c=(fflush(stdin),scanf(\ //判断输入的是否是整数a=(int)b; if(c!=1||a!=b||a>-2^16||a-2^16||adata=a;//存入数据 r->next=P;//新节点链入表尾r=P; do { c=(fflush(stdin),scanf(\ //判断输入的是否是整数 a=(int)b; if(c!=1||a!=b||a>-2^16||a-2^16||anext=NULL;//将尾节点的指针域置空 return(H);//返回已创建的头节点 } Link Adjmax(Link H)//求链表中相邻两节点data值之和为最大的第一节点的指针的算法 { Link p,p1,q; int i,j; p=p1=H->next; if(p1==NULL) return(p1); //表空返回 q=p->next; if(q==NULL)return(p1); //表长=1时返回 i=p->data+q->data;//相邻两节点data值之和 while(q->next){ p=q;q=q->next;//取下一对相邻节点的指针j=p->data+q->data; if(j>i){p1=p;i=j;//取和为最大的第一节点指针} } return (p1); } void main()//主函数 { Link A,B,p,q; int a,b; do { printf(\请输入一组整数(以0为结束符,数之间回车):\\n\ p=A=Createlist();//创建新链表 B=Adjmax(A);//求链表中相邻两节点data值之和为最大的第一节点的指针a=(int)(B->data);//取第一节点的data值printf(\第一节点的data值为:%d\\n\ while(p->next)//释放链表空间{q=p;p=p->next;free(q);} free(p); printf(\是否继续输入下一组整数:是:1,否:0\\n\scanf(\}while(b); } 上机题2、实现算术表达式求值程序。
数据结构第三章考试题库(含答案)

第3章栈和队列一选择题1. 对于栈操作数据的原则是()。
【青岛大学2001 五、2(2分)】A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2. 在作进栈运算时,应先判别栈是否( ①),在作退栈运算时应先判别栈是否( ②)。
当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( ③)。
为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的( ④)分别设在这片内存空间的两端,这样,当( ⑤)时,才产生上溢。
①, ②: A. 空 B. 满 C. 上溢 D. 下溢③: A. n-1 B. n C. n+1 D. n/2④: A. 长度 B. 深度 C. 栈顶 D. 栈底⑤: A. 两个栈的栈顶同时到达栈空间的中心点.B. 其中一个栈的栈顶到达栈空间的中心点.C. 两个栈的栈顶在栈空间的某一位置相遇.D. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.【上海海运学院1997 二、1(5分)】【上海海运学院1999 二、1(5分)】3. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。
A. 不确定B. n-i+1C. iD. n-i【中山大学1999 一、9(1分)】4. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。
A. i-j-1B. i-jC. j-i+1D. 不确定的【武汉大学2000 二、3】5. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( )。
A. iB. n-iC. n-i+1D. 不确定【南京理工大学2001 一、1(1.5分)】6. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?()A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 34 15 6【北方交通大学2001 一、3(2分)】7. 设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。
北京科技大学数据库考试题库

机考201601数据库应用 1. 项目文件的扩展名是()A..PJX2. 在命令窗口中键入下面哪个命令并按回车,可以退出Visual FoxPro()C.QUIT3. 选择哪个菜单下的“工具栏”,可以打开工具栏对话框()B.“显示”4. 命令窗口被关闭后,将其重新打开的快捷键是()D.〈Ctrl〉+〈F2〉5. 如果一个学生可以选修多门课程,而每门课程又可以被多个学生选修,则学生和课程之间联系属于()C.多对多联系6. 要想将日期中的年份用4位数字显示,应当使用的设置命令是()A.SET CENTURY ON7. 将“学生”表中所有学生的“入学成绩”加10分,正确的命令是()B.REPLACE ALL 入学成绩WITH 入学成绩+108. 设当前记录是第5条,若要将记录指针指向第8条记录,不能使用的命令是()D.SKIP 89. 将“学生”表中1990年出生的学生记录显示出来(“出生日期”字段为日期型),正确的命令是()C.LIST FOR YEAR(出生日期)=199010.Visual FoxPro不支持SQL的哪项功能()D.数据控制11.在命令窗口中输入并执行如下命令:X=275Y=“男”Z={^2010/05/28}M=.T.内存变量X、Y、Z、M的数据类型分别是()D.N、C、D、L12.顺序执行下列命令之后,“学生成绩”表在几号工作区()OPEN DATABASE 教学管理USE 学生SELECT 2USE 课程SELECT 0USE 学生成绩D.313.向数据库中添加自由表的命令是()A.ADD TABLE 表名14.打开“教学管理”数据库的正确命令是()D.OPEN DATABASE 教学管理15.在“数据工作期”窗口中可以()D.以上都可以16.在Visual FoxPro中,非当前工作区中字段的引用格式是()D.工作区别名.字段名17.在建立数据库表时,为表指定了主索引,这属于数据完整性中的()A.实体完整性18.在Visual FoxPro中有两类索引文件,它们的扩展名分别是()D..IDX和.CDX19.在E盘的“成绩管理”文件夹中创建一个“课程”自由表,正确的SQL命令是()B.create TABLE E:\成绩管理\课程FREE;(课程编号C(5),课程名称C(16),学时N(3))20.使用Visual FoxPro的查询命令查询时,是否已找到符合查询条件的记录,可通过哪个函数来测试()A.FOUND( )21.运行查询文件cx.qpr的命令是()D.DO cx.qpr22.数据库DB、数据库系统DBS和数据库管理系统DBMS三者之间的关系是()B.DBS包括DB和DBMS1. 在项目管理器中添加文件的操作步骤是()①在“打开”对话框中选择要添加的文件;②单击“添加”按钮;③在项目管理器中选定要添加的文件类型;④单击“确定”按钮,将所选的文件添加到该项目文件中。
北京科技大学2015年数据结构与算法分析试卷+答案

装 订 线 内 不 得 答 题自觉遵 守考 试 规 则,诚 信 考 试,绝 不作 弊(A) 空或只有一个结点 (B) 高度等于其结点数(C) 任一结点无左孩子 (D) 任一结点无右孩子6.一趟排序结束后不一定能够选出一个元素放在其最终位置上的是( )。
(A) 堆排序 (B) 冒泡排序 (C) 快速排序 (D) 希尔排序7.设某棵二叉树中只有度数为0和度数为2的结点且度数为0的结点数为n,则这棵二叉中共有()个结点。
(A) 2n (B) n+l (C) 2n-1 (D) 2n+l8.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为( )。
(A) O(n) (B) O(n2) (C) O(n1/2) (D) O(1og2n)9. 下列程序段的时间复杂度为()。
i=0,s=0; while (s<n) {s=s+i;i++;}(A) O(n1/2) (B) O(n1/3) (C) O(n) (D) O(n2)10. 深度为k的完全二叉树中最少有( )个结点。
(A) 2k-1-1 (B) 2k-1 (C) 2k-1+1 (D) 2k-111.设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为( )。
(A) front->next=s;front=s; (B) s->next=rear;rear=s;(C) rear->next=s;rear=s; (D) s->next=front;front=s;12.设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为( )。
(A) O(n+e) (B) O(n2) (C) O(ne) (D) O(n3)13.设某哈夫曼树中有199个结点,则该哈夫曼树中有( )个叶子结点。
(A) 99 (B) 100 (C) 101 (D) 10214.设无向图G中的边的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《认识实习》数学信计15考试报告(2017.07.14)
N = Convert.ToInt32(textBox1.Text);
k = new int[N, myn];
sum = new int[this.N];
ave = new float[this.N];
float num = 0f;
Random random = new Random();
Brush brush = new SolidBrush(Color.Red);
for (int i = 0; i < N; i++)
{
sum[i] = 0;
for (int j = 0; j < myn; j++)
{
float num2 = (float)random.NextDouble();
float num3 = 0f;
for (int k = 0; k < mym; k++)
{
if (k == 0)
{
num3 = P0[0];
}
else
{
num3 += P0[k];
}
if (num2 <= num3)
{
this.k[i, j] = k + 1;
break;
}
}
sum[i] += k[i, j];
}
num += (float)this.sum[i];
ave[i] = num / (float)(i + 1);
m2.Clear(Color.White);
lenx = (float)this.pictureBox2.ClientSize.Width / m2.DpiX;
leny = (float)this.pictureBox2.ClientSize.Height / m2.DpiY;
Pen pen = new Pen(Color.YellowGreen, 1f / m2.DpiY);
float num4;
for (int k = 1; k < mym; k++)
{
num4 = (float)k * leny / (float)this.mym;
m2.DrawLine(pen, 0f, num4, lenx, num4);
}
float num5;
for (int j = 1; j < myn; j++)
{
num5 = (float)j * lenx / (float)this.myn;
m2.DrawLine(pen, num5, 0f, num5, leny);
}
for (int j = 0; j < myn; j++)
{
num5 = ((float)j + 0.5f) * lenx / (float)this.myn;
num4 = ((float)this.k[i, j] - 0.5f) * leny / (float)this.mym;
m2.FillEllipse(brush, num5, num4, 0.2f, 0.2f);
}
lenx = (float)this.pictureBox1.ClientSize.Width / m1.DpiX;
leny = (float)this.pictureBox1.ClientSize.Height / m1.DpiY;
num5 = ((float)i + 0.5f) * lenx / (float)this.N;
num4 = ((float)(this.sum[i] - myn) + 0.5f) * leny / (float)(this.mym * myn - myn + 1); m1.FillEllipse(brush, num5, num4, 0.05f, 0.05f);
Pen pen2 = new Pen(Color.Gold, 1f / m3.DpiY);
if (i > 0)
{
float num6 = (float)(this.mym * myn - myn + 1) - ave[i - 1];
float num7 = (float)(this.mym * myn - myn + 1) - ave[i];
m3.DrawLine(pen2, (float)(((double)i - 0.5) * (double)this.X3), num6 * Y3, (float)(((double)i + 0.5) * (double)this.X3), num7 * Y3);
}
if (this.checkBox1.Checked)
{
Thread.Sleep((int)Convert.ToInt16(this.textBox2.Text));
}
}
5.在左下角,画出横线为随机变量的期望,累计平均值
Count(this.textBox5.Text);
maxy = 0f;
for (int i = 1; i <= myn; i++)
{
for (int j = 1; j <= mym * i; j++)
{
if (this.Pn[j - 1, i - 1] > maxy)
{
maxy = Pn[j - 1, i - 1];
}
}
}
m4 = pictureBox4.CreateGraphics();
m4.Clear(Color.White);
m4.PageUnit = GraphicsUnit.Inch;
lenx = (float)this.pictureBox4.ClientSize.Width / m4.DpiX;
leny = (float)this.pictureBox4.ClientSize.Height / m4.DpiY; X4 = lenx / (float)(this.mym * myn);
Y4 = leny / maxy;
Brush brush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
PointF pt = new PointF(0f, 0f);
PointF pt2 = new PointF(0f, 0f);
for (int i = 1; i <= myn; i++)
{
m4.Clear(Color.White);
for (int j = i; j <= mym * i; j++)
{
if ((double)this.Pn[j - 1, i - 1] > 0.001)
{
pt.X = (float)j * X4;
pt.Y = (this.maxy - Pn[j - 1, i - 1]) * Y4;
m4.FillRectangle(brush, pt.X, pt.Y, X4 / 2f, Pn[j - 1, i - 1] * Y4); }
}
Thread.Sleep(500);
}
float啊 = this.啊;
float哦 = this.哦;
float num = 0.1f;
int num2 = (int)(6.0 * Math.Sqrt((double)哦) / (double)num) + 1;
PointF[] array = new PointF[num2];
Pen pen = new Pen(Color.FromArgb(255, 255, 0, 0), 2f / m4.DpiY);
int num3 = 0;
int num4 = 0;
for (float num5 = (float)((double)啊 - 3.0 * Math.Sqrt((double)哦)); num5 <= (float)((double)啊 + 3.0 * Math.Sqrt((double)哦)); num5 += num)
{
float num6 = 1f / (float)Math.Sqrt(6.2831852 * (double)哦) *
(float)Math.Exp((double)(-(double)(num5 - 啊) * (num5 - 啊) / (2f * 哦)));
float x = num5 * X4;
float y = (this.maxy - num6) * Y4;
array[num3].X = x;
array[num3].Y = y;
num3++;
if (num4 == 0)
{
pt.X = x;
pt.Y = y;
num4 = 1;
}
else
{
pt2.X = x;
pt2.Y = y;
m4.DrawLine(pen, pt, pt2);
pt.X = pt2.X;
pt.Y = pt2.Y;
}
Thread.Sleep(10);
}。