DS上机实验题
DS综合练习A

一.单项选择题(每小题1分,共10分)1.计算机算法必须具备输入、输出和等5个特性。
[A]可执行性、可移植性和可扩充性[B]可行性、确定性和有穷性[C]确定性、有穷性和稳定性[D]易读性、稳定性和安全性2.线性表采用链式存储时,结点的存储地址。
[A]必须是不连续的[B]连续与否均可[C]必须是连续的 [D]和头结点的存储地址相连续3.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行。
[A]q->next=p->next;p->next=q;[B] p->next=q->next;q=p;[C]q->next=p->next;q->next=p;[D]p->next=q->next;q->next=p;4.设循环队列Q[N]的头尾指针分别为F,R,则进行出队操作需要的指针变化为。
[A]F=F+1 [B]F=(F+1)%N[C]R=(R+1)%N [D]R=R+15.在一个具有n个顶点的无向图中,要连通全部顶点,至少需要条边。
[A]n [B]n+1 [C]n-1 [D]n/26.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为( )[A] e [B] 2e [C] n2-e[D]n2-2e7.假设以I和O分别表示入栈和出栈操作,栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅有I和O组成的序列。
下面所示的序列中哪些是不合法的?[A]IOIIOIOO [B]IOIOIIOO[C] IIIOIOIO [D] IIIOOIOO8.如图所示的4棵二叉树,是平衡二叉树。
[B]9.下面的序列中, ____是堆。
[A] 9,8,7,6,4、8,2,1 [B] 9,8,7,6,5,4,3,7[C] 1,5,10,6,7,8,9,2 [D] 1,2,8,4,3,9,10,510.有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当二分查找值为82的结点时,次比较后查找成功。
前面上机实验部分参考答案

上机实验部分参考答案实验二:1、温度转换Private Sub Command1_Click()f = Val(Text1.Text)c = (f - 32) * 5 / 9Text2.Text = Str(c)End SubPrivate Sub Command2_Click()c = Val(Text2.Text)f = 9 * c / 5 + 32Text1.Text = Str(f)End Sub3、Print方法练习Private Sub Form_Click()For i = 1 To 5Print Tab(i); String(6 - i, "*"); Spc(6); String(i, "*") Next iEnd Sub4、圆周长面积Private Sub Command1_Click()Dim r!, m!, z!Const p = 3.14r = InputBox("请输入半径")m = p * r * r / 4z = 2 * p * rPrint "圆的面积为:", mPrint "圆的周长为:", zEnd Sub5、鸡兔同笼Private Sub Form_Click()Dim m%, n%m = InputBox("请输入总头数")n = InputBox("请输入总脚数")If n Mod 2 = 0 And n >= 2 * m And n <= 4 * m Theny = n / 2 - mx = m - yElseMsgBox "参数错误,请重新输入!"End IfPrint "已知,总头数m为:"; m, "总脚数n为:"; n Print "求得,鸡数x为:"; x, "兔数y 为:"; y End Sub实验三:2、计算电话费Private Sub Command1_Click()Dim st!, hours!, Money!'Dim date1 As Data, date2 As Datadate1 = CDate(Text1.Text)date2 = CDate(Text2.Text)st = DateDiff("s", date1, date2) / 60 '求两时间相差的分钟数Text3.Text = Format(st, "0.00") + " 分钟"If st <= 3 Then '计算通话费Money = 0.5ElseMoney = 0.5 + (st - 3) * 0.15End Ifhours = Val(Mid(Text1, 1, 2))If hours < 7 Or hours > 19 Then '是否在优惠的时间段内Money = Money * 0.5End IfText4.Text = Format(Str(Money), "¥0.00") + " 元"End Sub实验四:1、水仙花数Private Sub Form_Click()Dim i%, a%, b%, c%For a = 1 To 9For b = 0 To 9For c = 0 To 9If a * 100 + b * 10 + c = a * a * a + b * b * b + c * c * c ThenPrint a * 100 + b * 10 + cEnd IfNext cNext bNext aEnd Sub2、猴子吃桃Private Sub Command1_Click()Dim n%, i%x = 1Print "第七天桃子数为:"; x; "只"For i = 6 To 1 Step -1x = (x + 1) * 2Print "第"; i; "天的桃子数为:"; x; "只"Next iEnd Sub3、钢管下料Private Sub Command1_Click()Dim r%, a%, b%r = 321For b = 1 To 321 \ 27For a = 1 To 321 \ 17 - bt = 321 - b * 27 - a * 17If t >= 0 And t < r Thenr = tia = aib = bEnd IfNext aNext bPrint Tab(20); "17m长料下"; ia; "段"Print Tab(20); "27m长料下"; ib; "段"Print Tab(20); "余料="; r; "最少"End Sub实验五:1、字符串统计Private Sub Command1_Click()Dim a(1 To 26) As Integer, c As String * 1le = Len(Text1) '求字符串的长度For I = 1 To lec = UCase(Mid(Text1, I, 1)) '取一个字符,转换成大写If c >= "A" And c <= "Z" Thenj = Asc(c) - 65 + 1 '将A~Z大写字母转换成1~26的下标a(j) = a(j) + 1 '对应数组元素加1End IfNext IFor j = 1 To 26 '输出字母及其出现的次数If a(j) > 0 Then Picture1.Print " "; Chr(j + 64); "="; a(j);Next jEnd Sub2、统计成绩Private Sub Command1_Click()Dim mark(1 To 100) As Integer, aver!, n%, i%aver = 0For i = 1 To 100mark(i) = Int(Rnd * 101)aver = aver + mark(i)Next iaver = aver / 100n = 0For i = 1 To 100If mark(i) > aver Then n = n + 1Next iPrint aver, nEnd Sub实验六:1、点菜Private Sub Form_Load()List1.AddItem "宫爆鸡丁10元"List1.AddItem "鱼香肉丝8元"List1.AddItem "青菜蘑菇6元"List1.AddItem "清蒸鲈鱼20元"List1.AddItem "红烧牛肉15元"End SubPrivate Sub Command1_Click()Dim i As Integer, money As SingleList2.ClearFor i = 0 To List1.ListCount - 1If List1.Selected(i) ThenList2.AddItem List1.List(i)End IfNextEnd Sub2、滚动字幕Private Sub Form_Load()Timer1.Interval = 100HScroll1.Min = 1HScroll1.Max = 10HScroll1.Value = 5HScroll1.SmallChange = 1rgeChange = 2Label1.Top = Int(Rnd * ScaleHeight)Label1.FontSize = Int(1 + Rnd * 30)Label1.Left = Form1.WidthEnd SubPrivate Sub Timer1_Timer()Label1.Move Label1.Left - HScroll1.Value * 100 If Label1.Left < 0 ThenLabel1.Left = Form1.WidthLabel1.Top = Int(Rnd * ScaleHeight)Label1.FontSize = Int(1 + Rnd * 30)End IfEnd Sub。
上机实验五_答案(请自行校对)

//下面这个for语句打印前4行*
for (i=1; i<=4; i++) {
//这个for语句打印空格数量
for (j=0; j < 4-i; j++)
printf("%c ", ' '); //这里也可以是printf(" ");
//这个for语句打印*,其中*的数量为2*i-1
*/
#include <stdio.h>
void main(){
int k, sum;
printf("请输入一批正整数:");
scanf("%d", &k);
sum = 0; //最开始赋初值0给变量
while ( k>0 )//如果是正整数,那么一直循环,直到输入的为0或负数时停止
{
if ( k%2 == 0) //如果读入的正整数k为偶数
9)输出2位精度的结果
// while语句
#include <stdio.h>
void main(){
float sum, term, a, b, c;
int i;
sum = 0;
a = 2; b = 1;
i = 1;
while (i<=20) {
term = a/b;
sum = sum + term;
sum = sum + k; //求和
scanf("%d", &k); //继续读入下一个正整数
}
printf("正整数的偶数和为:%d\n", sum);
第三次上机检索实习题目(2012.10.19)

第三次上机检索实习题目一、实习题目:1、使用“国家知识产权局”网站或“中国专利信息网”(1)检索“哈尔滨市松花江专利事务所”代理的外观设计专利申请案,按时间顺序选择前十篇摘录下来。
(2)查询2001年03月23日申请,一种芦荟饮料及其制备方法的中国专利,写出配方提到果汁原液含量;写出申请日期及专利有效期截止日期;写出专利的IPC分类号、公开号及发明人等信息记录下来。
答:IPC号为A23L2/022、使用美国专利数据库检索:检索课题:2000到2006年有关Technology of Activated Carbon Desulphurrization(活性炭脱硫技术)方面的专利。
检索要求:分析课题,列出检索词并编写检索式,输出检索结果记录两条并将其题录形式复制在答案的文本文件中。
检索词:(1)activated carbon(2) desulphurization检索式:TTL/"activated carbon" AND desulphurization检索过程:打开高级检索界面,在检索框输入检索式。
检索结果命中2条,分别是:1 6,932,956 Production of sulphur and activated carbon2 5,672,323 Activated carbon flue gas desulfurization systems for mercury removal符合检索要求的为第一条。
3、检索发明名称中包含Heat stabilizer(热稳定剂)且专利号为TW201229214 (A)的专利。
指出该件专利的优先申请国别。
4、“中国国家图书馆”网站中查找一篇学位授予单位为北京大学的“计算机”研究领域的博士论文,共有几篇?5、李老师去南宁出差,他不清楚北京到南宁坐火车最快需要多少小时,坐飞机每日有几次航班,请帮他查查。
坐火车最快需要1小时40分坐飞机有九次航班,如下:6、如果你想查找本专业的文献,请总结(1) 图书馆的可利用的数据库有哪些?(2) 有哪些门户网站?(3) 还有哪些资源可以利用(不限定在图书馆,包括网络上的、文献单位的资源等) 答:(1)图书馆可利用的数据库分两大类:中文数据库和西文数据库。
GMDSS实操练习题

GMDSS实操练习题+INMARSAT-B/F实操练习题B站86800+洋区码船对船86800+86 船对岸F站00+洋区接入码船对船00+86 船对岸1.航行在太平洋的某船,ID:763611501,在电话薄里面存储其号码,名称为10,并拨号。
Book—menu—addentry—name--10--ok—number—008707636115012.将F站模拟器开机;设置电话通信速率为64K。
手动搜索POR 的卫星,设置默认的地面站为868/China。
Menu—Phone setup---active msn—OK—64KMenu---sat search—find any—porMenu—set network—868/china3.利用本船F船站,(1)请将大连海洋大学航海技术通信导航实验室0411-********,编入电话簿;(2)利用该电话簿给其打电话。
Book—addentry—name—DL—ok—number—008641184762012--ok4.让F站手动搜索POR的卫星,设置电话通信速率为4.8K。
设置默认的地面站为868/China。
Menu—sat—por—ok menu—phone setup—active msn—4.8K5.让F站手动搜索POR的卫星。
设置默认的地面站为868/China。
Menu—sat—por—ok Menu—set network—868/china6.让F站自动搜索卫星。
设置默认的地面站为868/China。
利用本船F船站打电话给大连海洋大学航海技术通信导航实验室0411-********。
Menu—sat—find any menu---set network—868/china 0086411847620127.让船站跟踪上太平洋卫星,然后设置默认的地面站为868/China。
Menu—sat—por menu—setnetwork—868/china8.让船站自动搜索卫星,然后设置默认的地面站为868/China。
计算机网络上机实验题

计算机网络上机实验题
实验题目
请编写一个简单的计算机网络实例来展示数据包的传输过程。
实验要求
1. 使用至少2台计算机来模拟网络环境。
2. 实现一个简单的客户端和服务器端程序。
3. 客户端程序向服务器端发送数据包,并在服务器端输出接收
到的数据包内容。
实现步骤
1. 搭建网络环境:连接两台计算机,并确保它们可以相互通信。
2. 编写服务器端程序:使用一种编程语言(如Python)编写服
务器端程序,监听指定端口并等待数据包的到达。
3. 编写客户端程序:使用同一种编程语言编写客户端程序,向
服务器端指定的IP地址和端口发送数据包。
4. 数据包传输:客户端程序发送数据包,服务器端程序接收并输出数据包内容。
5. 测试:运行客户端和服务器端程序,观察数据包的传输过程和服务器端输出的内容是否正确。
实验注意事项
- 确保计算机之间的网络连接正常,可以相互通信。
- 检查防火墙设置,确保指定的端口可以通信。
- 在编写程序时,注意数据包的格式和传输方式。
实验评估标准
- 搭建网络环境成功。
- 程序能够正常运行,客户端能够发送数据包,服务器端能够接收并输出数据包内容。
- 能够准确理解和解释实验的目的和过程。
参考文献
- 无。
数值分析上机实习题及答案.docx

方詡文金兴:爭[数值分析]2017-2018第二学期上机实习题1:编程计算亍丄,其中C= 4. 4942x10307,给出并观察计算结心C"果,若有问题,分析之。
解:mat lab 编程如下:E) funct ion diy i ti formatlong g;n 二input C 输入ii 值= c= 4.4942E307; sum 二0; s 二 0;E3 for i = l:n s = l/ (c*i);>> diyiti 输入n 值:10 104.6356e-308 >> diyiti输入ri 值:1001004.6356e-308 >> diyiti 输入n 值:1000 10004.6356e-308 >> diyiti揄入n 值* 1000001000004・ 6356e-308 >> diyiti输入n 值;1000000001000000004.6356e-308图二:运行结果Mat lab 中,forma t long g 对双精度,显示15位定点或浮点格式,由上图 可知,当输入较小的n 值5分别取10, 100, 1000, 100000, 100000000)的时候, 结果后面的指数中总是含有e-308,这和题目中的C 值很相似,我认为是由于分 母中的C 值相对于n 值过大,出现了 “大数吃小数”的现彖,这是不符合算法原 则的。
2:利用牛顿法求方程-1^ = 2于区间241的根,考虑不同初值下牛顿法的收敛情况。
解:牛顿法公式为:利用mat lab 编程function di2ti21 3i=l ;2 2.85208156699784 xO 二input ('输入初值x0:‘ );A 二[i x0];3 2.55030468822809 t=x0+ (x0-log (xO) -2) /(1-1/xO) ; %迭代函数4 1.91547247100476 三 while (abs (t _x0)>0.01)i=i+l; 5 0.37867158538991 xO 二 t; 6 0.774964959780275 A = [A;i xO];t =x0+(x0-log(xO)-2)/(1-1/xO): 7 4.11574081641933 cnd| 8 5.04162436446126 disp (A);96.81782826645596当输入初值二3的时候并不能收敛。
DS试题10套

第一部分选择题一、单项选择题(本大题共20小题,每小题1分,共20分)1.计算机算法指的是,它必须具备输入、输出和【】A.计算方法B.排序方法C.解决问题的有限运算步骤D.程序设计方法2.下列算法的时间复杂度是【】for(i=0;i<n;i++)c[i][j]=i+j;A .O(l) B.O(n) C.O(log2n) D.O(n2)3.在单链表的一个节点中有【】A.l个指针B.2个指针C.0个指针D。
3个指针4.在具有n个节点的单链表中做插入、删除运算,平均时间复杂度为【】A.O(l)B。
O(n)C.O(log2n)D.O(n2)5.向一个栈顶指针top的链栈中插入一个S所指节点时,执行【】A.top->next=s;B.s->next=top->next;top一>next=s;C.s->next=top;top=s;D.s->next=top;top=top->next;6.栈结构通常采用的两种存储结构是【】A.散列方式和索引方式B.顺序存储结构和链表存储结构C.链表存储结构和数组D.线性存储结构和非线性存储结构7.设s1=””,则strlen(s1)=【】A.0 B.1 C。
2 D.38.设目标串T=”aabbccddbbaa”,模式P=”bb”,则该模式匹配的有效位移为【】A.1 B.2 C.3 D.49.数组与一般线性表的区别主要在【】A.存储方面B.元素类型一致C.逻辑结构方面D.不能进行插入、删除运算10设二线数组A[0。
m-l][0。
n-1]按行优先顺序存储在内存中,每个元素占d个字节,则元素A[i][j]的地址为【】A.LOC(A[1][1])+[(i-1)*n+j-l]*dB.LOC(A[0][0])+[(i-l)*n+j-1]*dC.LOC(A[1][1])+[(j-l)* n+i–1]*dD.LOC(A[0][0])+[(j-l)*n+i-1]*d11具有n个节点的完全二叉树的深度为【】A.log2n +1 B.log2n+lC.log2n D.log2n12在具有n(n>l)个节点的完全二叉树中,节点i(2i>n)的左孩子节点是【】A.2i B.2i+lC.不存在D.是2i-l13.在一个图中,所有顶点的度数之和等于图的边数的几倍。
地理信息系统上机实习二

实习2.创建自己的项目文件目的1、掌握如何创建自己的项目文件。
2、了解如何编辑图层的图例,设置图层的比例尺显示开关。
3、掌握GIS的一般查询和检索工具;4、掌握图形输出的排版设计。
1.创建自己的新项目⑴启动ArcView单击开始→程序(P)→ESRI→ArcView GIS 3.2a→ArcView GIS 3.2a⑵在欢迎对话框中,选择“As a blank project”,单击“Ok”。
如右图2.1⑶单击视图图标,单击“New”命令按钮激活Project窗口,可以发现已经新建了一个名字为“View1”的视图。
⑷双击“View1”,在出现的子窗口中,执行“View”下的“Properties”命令。
在弹出的对话框中,作如右图2.2的修改,然后单击“Ok”单击菜单“Windows”下的“Untitled”子菜单,激活Project窗口,观察视图名有什么变化,然后回到View窗口。
⑸单击菜单“View”下的“Add theme”,或者单击工具按钮,出现如右图2.3的添加图层对话框⑹在“Add theme”对话框中,改变驱动器和文件夹到$HomeDriver\ESRI\ A V_GIS30\ A VTUTOR\ ARCVIEW\QSTAR,选择“Deg30.shp”文件,单击“Ok”图2.1 欢迎对话框图2.2 View Properties 对话框图2.3 增加图层对话框⑺重复第⑸步操作,分别加入“World94.shp”、“State.shp”与“Uscities.shp”图层。
如右图2.42.改变图层的显示效果⑴在“TOC”中双击“Deg30.shp”图层,或者先激活“Deg30.shp”图层,然后单击工具按钮,打开如右图2.5的图例编辑框⑵在“Legend Editor”窗体中,双击“Symbol”栏下的图例进行编辑。
在弹出的窗体中,单击“Fill Palette”,选择“无填充”项,如右图2.6,然后关闭该窗体。
DS_上机实验的目的、要求和评分标准

上机实验的目的、要求和评分标准一、实验目的上机实践是各位对本门课程所学知识的一种全面、综合的能力训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节,也是对课堂教学与实践教学效果的一种检验。
通常,实验题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合,使你们学会如何把书上学到的知识运用于解决实际问题的过程中去,培养从事软件开发设计工作所必需的基本技能;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。
平时的练习较偏重于如何编写功能单一的“小”算法,而实验题是软件设计的综合训练,包括问题分析(需求分析)、总体结构设计和用户界面设计(概要设计)、程序设计基本技能和技巧等,即一整套软件工程规范的训练和科学作风的培养。
此外,还有很重要的一点是:机器是比任何教师都严厉的主考者。
为了达到上述目的,本课程共安排了10个实验单元,各单元的训练重点在于基本的数据结构,而不强调面面俱到。
各实验单元与教科书的各章具有紧密的对应关系。
二、要求:⒈做好每一次上机前的准备以提高上机效率:①预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来,应该自己独立的思考和设计你的算法和程序,并争取在规定的时间内如期完成上机工作任务。
对于个别目前基础较差的同学,实在是没法完成任务的建议你先参考其他同学的算法,勤学好问,最终自己独立完成,以增强你的感性认识,强化你的实践基础,提高你的实践能力。
②按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。
③将想要上机验证的问题草拟提纲;制定一个简捷的程序调试计划。
⒉上机时输入和调式自己所编写的程序。
对“出错信息”,应善于自己分析判断,并充分利用开发工具提供的错误信息和调试手段解决出现的问题,及时修改与完善算法、源程序,随时记录有价值的内容。
人工智能上机试验报告

人工智能上机实验报告人工智能上机实验题目:自动求解八数码难题。
八数码难题:在3×3的方格棋盘上,分别放置了标有数字1,2,3,4,5,6,7,8的八张牌,初始状态S0,目标状态如下图所示,可以使用的操作有:空格左移,空格上移,空格右移,空格下移。
图1 八数码难题的目标状态请上机参考给定的类用C++实现八数码难题的自动求解,给出操作步骤。
参考代码的说明如下:1.CSearchEngine类:搜索引擎基类,你可以在它的基础上编写更好的搜索引擎2.CGSESearchEngine类:使用全局择优搜索算法的搜索引擎3.CEveluation类: 节点估价类, 对棋盘局面进行估值, 以引导搜索4.CMoveGenerator类:走法产生器,对某一局面产生合适的走法具体要求:1.对于指定的(程序内定的)初始问题状态,上机输入调试运行程序,给出自动求解步骤。
2.原估价函数为“不在位”的数码个数,请修改估价函数为“不在位的数码距离正确位置的距离”。
3.选做1:通过输出扩展节点,比较2中两种不同估价函数的效率。
选做2:编写随机生成初始状态的类,增强程序功能。
思考:是不是任意初始状态都能找到解?问题一:上图各节点中的数据,前三行为八个数字的布局,最后一行是评价结果,红色框和箭头指出最优路径。
搜索过程使用广度优先策略。
估价函数为:不在位的数码个数。
以下为运行结果步骤:2 8 31 6 47 0 52 8 31 0 47 6 5press enter to continue the next step:2 0 31 8 47 6 5press enter to continue the next step:0 2 31 8 47 6 5press enter to continue the next step:1 2 30 8 47 6 5press enter to continue the next step:1 2 38 0 47 6 5You've have the solution!问题二: //新的评价函数,不在位的数码距离正确位置的距离int CEvaluation::Evaluate(BYTE byBoard[][3]){BYTE destBoard[3][3] = { {1,2,3}, {8,0,4}, {7,6,5} };int iDist = 0;int i_1, j_1, i_2, j_2;BYTE num;for( num = 0; num <= 8; num ++ ){GetNumPos(byBoard, i_1, j_1, num);GetNumPos(destBoard, i_2, j_2, num);iDist += abs(i_1 - i_2) + abs(j_1 - j_2);}return iDist;}void CEvaluation::GetNumPos(BYTE byBoard[][3], int &i, int &j, BYTE num) {for( i = 0; i < 3; i ++ )for( j = 0; j < 3; j ++ )if( byBoard[i][j] == num )return;}问题三:上图各节点中的数据,前三行为八个数字的布局,最后一行是评价结果,红色框和箭头指出最优路径。
2013级DS作业和实验参考答案总汇(1)

2013级DS作业和实验参考答案总汇目录第一次作业:复习C++ 9000,9002第二次作业:顺序表插入和删除操作9003,9004第三次作业:顺序表查找操作和单链表建立9012,9006第四次作业:单链表操作9014,9016,9017第五次作业:特殊线性表栈操作9045,9042,9041第六次作业:特殊线性表队列操作9038,9040第七次作业:二叉树的顺序存储9050第八次作业:复制二叉树9063第九次作业:二叉树的高度宽度9057,9067第十次作业:图的邻接矩阵及遍历9070,9072,9087第十一次作业:图的生成树9076,9077,9088第十二次作业:图的最短路径9092,9091,9085 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!第一次实验:顺序表9010,9005第二次实验:顺序表2 9097第三次实验:单链表9007第四次实验:循环链表9008第五次实验:递归9039第六次实验:二叉树的建立及遍历9019第七次实验:二叉树的结点9054,9056第八次实验:二叉树的存储转换9049第九次实验:哈夫曼编码9068第十次实验:图的邻接表及度9071,9079第十一次实验:图的存储转换9089,9084,9083第十二次实验:模拟考试!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!第一次作业:复习C++9000,90029000:矩形面积Problem Description声明一个名为rect的矩形类,其属性为矩形的左下角和右上角两个点的x和y坐标,该类有效矩形只存在于直角坐标系的第一象限内。
若所构成的矩形有效,则计算矩形的面积;若所构成的矩形无效,则输出“data error”。
11DS上机指导1实验报告 (2)

《数据结构》实验指导(一)顺序表初始化、创建和输出一、实验目的1、学会使用VC6.0的集成开发环境。
2、掌握线性表的顺序存储结构及其编程。
二、实验内容1、根据下列程序环境的设置,完成顺序表的初始化函数status InitList_Sq(SqList *L)的编写。
#include "stdio.h"#include "stdlib.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -2typedef int status;typedef int elemtype; //元素为整型#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct{elemtype *elem;int length;int listsize;}SqList;status InitList_Sq(SqList *L) //构造一个空的顺序表{L->elem=(elemtype*)malloc(LIST_INIT_SIZE*sizeof(elemtype)); if(!L->elem) exit(OVERFLOW);L->length=0;L->listsize=LIST_INIT_SIZE;return OK;}2、在第1题的基础上,输入下面的创建顺序表函数。
status create_Sq(SqList *L)//建立一个顺序表,含有n个数据元素。
{int m,n;printf("请输入元素的个数:");scanf("%d",&n);for(m=0;m<n;m++){printf("请输入第%d个元素:",m+1);scanf("%d",&L->elem[m]);L->length++;}return OK;}3、在第1和第2题的基础上,补充完整输出顺序表中元素和元素个数的输出函数。
DS上机实验题

数据结构实验每一个实验有两个题目,题目一属于综合性实验(全部都做),题目二属于设计性实验(至少必选4题)。
此外,鼓励自选1至2道创新性实验题(自拟题)。
指导老师:刘波,李宇时间:双周星期二(3~4节课)。
要求:上机前先准备编写程序。
实验后及时完成实验报告,采用学校统一规定实验报告格式书写。
实验报告按照以下内容书写:(一)实验目的和要求;(二)实验主要内容;(三)实验原理(抽象数据类型的定义,自定义结构类型说明,算法基本操作说明等)(四)实验步骤及调试分析;(五)实验结果及分析;(六)附录:源程序实验1 抽象数据类型题目一:三元组抽象数据类型的表示与实现1 实验目的:熟悉抽象数据类型的表示和实现方法2 实验内容:(1)定义三元组抽象数据类型Triplet,说明三元组存储结构以及基本操作原型;(2)实现对三元组的构造、读取、求最大、最小值等基本操作3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
.题目二:复数四则运算1实验目的:熟悉抽象数据类型的表示和实现方法,利用高级程序语言中已存在的数据类型说明新的结构。
2 实验内容(1)定义复数抽象数据类型Complex,说明其基本操作原型;(2)实现下类基本运算:由输入的实部和虚部生成一个复数;两个复数求和;两个复数求差;两个复数求积。
运算结果以相应的复数或实数的表示形式显示。
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
实验2 线性表及其应用题目一:线性表的操作1 实验目的:熟练掌握线性表的基本操作在顺序或链式存储结构上的实现。
2 实验内容:(1)建立n个元素的顺序或链式表,实现顺序或链式表的基本操作;(2)在线性表中元素i之后插入一个元素,实现顺序或链式表插入的基本操作;(3)在线性表中删除指定位置i上的元素,实现顺序或链式表删除的操作。
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
题目二:学生课程管理系统1 实验目的:熟练掌握线性表基本操作的实现及应用2 实验内容:利用顺序表完成一个班级的一个学期的课程的管理:能够增加、删除、修改学生的成绩记录。
DS作业第一题

• 3. 波码开关电路
键盘读入流程
• • • • • •
• •
1.实验准备 连接实验设备。 关闭实验箱上扩展模块和信号源电源开关。 2.设置Code Composer Studio 3.3 在硬 件仿真(Emulator)方式下运行 3.启动Code Composer Studio 3.3 4.打开工程文件: C:\ICETEK\F2812\DSP281x_examples\La b0301-LED\DIP.pjt 5.编译、下载程序。 6.运行程序,观察结果。
• •
main() { InitSysCtrl(); while ( 1 ) { LBDS=DIPS; } }
Question
• ICETEK–F2812-A 评估板上的指示灯控制 寄存器是可读可写的,请问用什么办法可 以回读指示灯状态? • 改进程序功能 (1)改变延时,加长,简短 (2)数字显示0-1-2-3-…-15-0-…或其他 (3)四个按键某一个有效时,显示功能为 左移,右移,1+3闪烁,2+4闪烁等
•
#include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File #include "f2812a.h" #define LBDS (*((unsigned int *)0xc0000)) #define DIPS (*(unsigned int *)0xc0001)
• • • • • • • • • • • • • • • • • • • • • • • • • • • •
DS实验六 HUFFMAN的应用

广州中医药大学信息技术学院实验报告课程名称:数据结构与算法专业班级:计算机科学与技术( )级学生学号:(组员学号)学生姓名:(组员姓名)实验名称:实验成绩:课程类别:必修 限选□公选□其它□实验六哈夫曼编码及应用实验目的:了解哈夫曼树的应用,掌握哈夫曼树的构造方法及前缀码的应用。
实验性质:设计性,应用性。
实验步骤:(1)输入一串字符,统计其中所有的不同字符及其个数,得出每个不同字符在文中出现的频率。
(2)根据每个字符频率建立哈夫曼树,输出字符对应的编码。
(3)输入一个0.1字串,得出其译码。
[实验要求]1、实验要求按组完成,要求写实验报告。
2、按时提交,并按组汇报程序运行过程,结果等。
3、迟交或不交的或源代码雷同者一律不做作业登记评分。
[作业提交](实验报告写在此处)(作业提交说明:实验完成后,将此文档和相关的程序文件一并压缩后提交上来,文件名为组号+实验名,如第一组huffman算法的应用.RAR)实验报告格式如下:一元多项式的表示及运算(实验报告)班级:计算机科学与技术专业( )级学号: ******** 姓名:*******学号: ******** 姓名:*******学号: ******** 姓名:*******完成日期:( )年( )月( )日一.问题的需求分析1.问题描述编制一个程序,实现两个一元多项式的相加、相减、相乘。
2.需求分析(1)建立一元多项式(2)计算出两个一元多项式的和、差、积。
(3)一元多项式运算结果输出二.抽象数据类型的设计ADT 一元多项式的表示及运算ADT Poly isoperationsPolyNomail createPoly()PolyNomail add(PolyNomail ahead,PolyNomail bhead);相加PolyNomail sub(PolyNomail ahead,PolyNomail bhead);相减PolyNomail mult(PolyNomail ahead,PolyNomail bhead);相乘Void output(PolyNomail dpoly);end ADT Poly三.算法与数据结构的设计1 数据结构设计在对上述问题的数据进行抽象之后,确定应用以下存储结构: typedef struct term* PolyNomail;typedef struct term{double coef;//变量代表的意义需要加注释int expn;struct term *next;}PolyNode;进行运算的函数:PolyNomail add(PolyNomail ahead,PolyNomail bhead);相加PolyNomail sub(PolyNomail ahead,PolyNomail bhead);相减PolyNomail mult(PolyNomail ahead,PolyNomail bhead);相乘2 算法设计(下面以多项式相加为例)一元多项式的相加算法图示bh分别对两个链表ah 、bh进行扫描,设p 、q 分别指向线性链表ah 、bh的当前进行比较的某个结点:p-> expn < q-> expn : p 所指结点应为和多项式中的结点p-> expn = q-> expn :将p所指结点的系数“加”到q所指结点的系数上相加;p-> expn > q-> expn x :从表bh中删除q 所指结点,并将其插入到ah表p所指结点之前;四.算法的精化与程序的实现(程序实现的核心算法)createPoly从终端输入数据建立多项式链表:PolyNomail createPoly(){PolyNode *head=0;int expn;double coef;head=(PolyNode*)malloc(sizeof(PolyNode));if(head==0)return 0;head->coef=0.0;head->expn=0;head->next=0;do{printf("Input Coef and Expn (0 0):");//输入系数及指数,以输入0 0结束scanf("%lf%d",&coef,&expn);if((long)coef==0&&expn==0)break;insert_node(head,coef,expn);}while(1);return head;}//add实现多项式链表相加:PolyNomail add(PolyNomail ahead,PolyNomail bhead) {PolyNode *head=0;PolyNode *ap,*bp;int expn=0; double coef=0.0;ap=ahead->next; bp=bhead->next;head=(PolyNode*)malloc(sizeof(PolyNode));if(head==0)return 0;head->coef=0.0; head->expn=0; head->next=0; while(ap){expn=ap->expn; coef=ap->coef;insert_node(head,coef,expn);ap=ap->next;}while(bp){expn=bp->expn; coef=bp->coef;insert_node(head,coef,expn);bp=bp->next;}return head;}//sub实现多项式链表相减:……五.程序的调试与计算的结果分析用户进入程序之后就输入第一个多项式的每一个项,并以(0,0)结束,之后输入第二个多项式,这样就能够计算出相加、相减、相乘的结果。
DS-上机体验作业

数据结构上机验证题一、设计并实现一个单链表操作算法:1)建立一个有序单链表h(a1,a2,…,a10);2)验证P56 题2.2, 2.3题算法,输出其结果值;二、设计并实现一个二叉树的操作算法:1、构造一二叉树,输出其中序遍历序列。
2、验证P194 题7.6题算法。
选做:验证其它感兴趣题。
每人所有程序用一个文件名(姓名+学号),以班为单位,集体发给教辅!1.单链表建立与操作例//单链表的创建、遍历、插入、删除、查询:#include <stdio.h>#include <malloc.h>#define N 8typedef struct node{int data;struct node *next;}node;node * createsl(){ node *p,*s,*h;int j=1,x;p=s=h=(node*)malloc(sizeof(node));h->next=NULL;printf("please input the data to create the list,end with -1 or %d nupmbers\n",N);while(x!=-1&&j<=N){ printf("number %d:",j);scanf("%d",&x);s=(node*)malloc(sizeof(node));s->data=x;if(h->next==NULL)h->next=s;elsep->next=s;p=s;j++;}p->next=NULL;return h;}int access(node *h,int i){ node *p;int j=1;p=h->next;while(p!=NULL){ if(p->data==i)break;p=p->next;j++;}if(p!=NULL){ printf("find the number in position:%d\n",j);return(p->data);}else{ printf("can't find the number in the list!\n"); return -1;}}void insertsl(node *h,int i){ node *p,*t;int j=1;p=h->next;;while(p->next!=NULL){ p=p->next;j++;}t=(node*)malloc(sizeof(node));t->data=i;t->next=p->next;p->next=t;printf("insert success in position %d\n",j+1); }void deletesl(node *h,int i){ node *p,*s,*q;int j=1;p=h;while(p->next!=NULL){ q=p->next;if(q->data==i)break;p=p->next;j++;}if(p->next==NULL){ printf("Can't find the number you want to delete.\n"); return;}else{ s=p->next;p->next=s->next;free(s);printf("delete success in position %d\n",j+1);}}void print(node *h){ printf("\nprint all the data in the list:") ;node *s;s=h->next;if(s!=NULL){ while(s!=NULL){ printf(" %d ",s->data) ;s=s->next;}}elseprintf("the list is empty!%d");printf("\n");}int main(){ node *p;int a;p=createsl() ;printf("\nyou need find the number:\n");scanf("%d",&a);access(p,a);printf("\nplease input the number you want to insert:\n");scanf("%d",&a);insertsl(p,a);printf("\nplease input the number you want to delete:\n");scanf("%d",&a);deletesl(p,a);print(p);return 0;}2.二叉树的建立与遍历程序例#define LEN sizeof(struct tree)#define NULL 0#include<stdio.h>#include<malloc.h>struct tree{char data;struct tree *lchild,*rchild;};//创建二叉树struct tree *creat(){ //输入用广义表简化法,如图:AB空C空空D空空char c;struct tree *t;A c=getchar();if(c==' ')t=NULL;else{t=(struct tree*)malloc(LEN);t->data=c;t->lchild=creat();t->rchild=creat();}return t;}//前序遍历void Preprint(struct tree*t){if(t!=NULL){printf("%c->",t->data);Preprint(t->lchild);Preprint(t->rchild);}}//中序遍历void Inprint(struct tree*t){if(t!=NULL){Inprint(t->lchild);printf("%c->",t->data);Inprint(t->rchild);}}//后序遍历void Postprint(struct tree*t){if(t!=NULL){Postprint(t->lchild);Postprint(t->rchild);printf("%c->",t->data);}}main(){struct tree *t;printf("Please input tree in order:\n");t=creat();printf("The result of Preorder traversal is\n"); Preprint(t);printf("^\nThe result of Inorder traversal is\n"); Inprint(t);printf("^\nThe result of Postorder traversal is\n"); Postprint(t);printf("^\n");return 0 ;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验
每一个实验有两个题目,题目一属于综合性实验(全部都做),题目二属于设计性实验(至少必选4题)。
此外,鼓励自选1至2道创新性实验题(自拟题)。
指导老师:刘波,李宇时间:双周星期二(3~4节课)。
要求:上机前先准备编写程序。
实验后及时完成实验报告,采用学校统一规定实验报告格式书写。
实验报告按照以下内容书写:
(一)实验目的和要求;
(二)实验主要内容;
(三)实验原理(抽象数据类型的定义,自定义结构类型说明,算法基本操作说明等)
(四)实验步骤及调试分析;
(五)实验结果及分析;
(六)附录:源程序
实验1 抽象数据类型
题目一:三元组抽象数据类型的表示与实现
1 实验目的:熟悉抽象数据类型的表示和实现方法
2 实验内容:
(1)定义三元组抽象数据类型Triplet,说明三元组存储结构以及基本操作原型;
(2)实现对三元组的构造、读取、求最大、最小值等基本操作
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
.
题目二:复数四则运算
1实验目的:熟悉抽象数据类型的表示和实现方法,利用高级程序语言中已存在的数据类型说明新的结构。
2 实验内容
(1)定义复数抽象数据类型Complex,说明其基本操作原型;
(2)实现下类基本运算:由输入的实部和虚部生成一个复数;两个复数求和;两个复数求差;两个复数求积。
运算结果以相应的复数或实数的表示形式显示。
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
实验2 线性表及其应用
题目一:线性表的操作
1 实验目的:熟练掌握线性表的基本操作在顺序或链式存储结构上的实现。
2 实验内容:
(1)建立n个元素的顺序或链式表,实现顺序或链式表的基本操作;
(2)在线性表中元素i之后插入一个元素,实现顺序或链式表插入的基本操作;
(3)在线性表中删除指定位置i上的元素,实现顺序或链式表删除的操作。
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
题目二:学生课程管理系统
1 实验目的:熟练掌握线性表基本操作的实现及应用
2 实验内容:利用顺序表完成一个班级的一个学期的课程的管理:能够增加、删除、
修改学生的成绩记录。
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
实验3 栈和队列及其应用
题目一:栈及队列的操作
1 实验目的:熟练掌握栈及队列基本操作的实现
2 实验内容:
(1)建立栈并进行一些元素入栈,实现链栈的建立及入栈的基本操作;
(2)实现某些元素的出栈,实现链栈的出栈的操作;
(3)建立链队列,并实现一些元素入队,实现链队列的建立和入队的基本操作;
(4)实现某些元素出队,实现链队列的出队的基本操作
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
题目二:停车场管理
1 实验目的:熟练栈和队列的结构特性,掌握在实际问题背景下的应用
2 实验内容:
问题描述:
设停车场是一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆达到时间的先后顺序,依次由北向南排列(大门在最南端,最先达到的第一
辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退车车场为它让路,待赶辆车开出大门外,其它车辆在按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短叫纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
●基本要求
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:汽车“达到”或“离去”信息、汽车牌照号码以及达到或离去的时刻。
对每一组输入数据进行操作后的输出信息为:若是车辆达到、则输出汽车在停车场内或便道上停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表结构实现。
●测试数据
设n=2,输入数据为(“A”,1,5), (“A”,2,10), (“D”,1, 15), (“A”,3,20),(“D”,2, 35), (“E”,0,0), (“A”,1,5), 其中:“A”表示达到(Arrival);“D”表示离去(Departure); “E”表示输入结束(End)。
3实现提示:
需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。
输入数据按达到或离去的时刻有序。
栈中每个元素表示一辆汽车,包括两个数据项:汽车的牌照号码和进入停车场的时刻。
4 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
实验4 树及其应用
题目一:排序二叉树的建立与操作
1 实验目的:通过二叉树的建立来了解二叉树的定义及有关概念,熟悉二叉树的存储结构及性质,掌握用指针类型处理二叉树。
2 实验内容:
(1)构建一颗二叉树;
(2)实现二叉树中所有结点的左、右子树相互交换。
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
题目二:哈夫曼码编
1 实验目的:熟练哈夫曼树的定义,掌握构造哈夫曼树的方法、哈夫曼编码的方法
2 实验内容:
●问题描述:
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编码或译码系统。
试为这样的信息发送站写一个哈夫曼码的编码系统。
●基本要求:
一个完整的系统应具有以下功能:
(1)初始化。
从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树。
(2)编码。
利用以建好的哈夫曼树对文件的正文进行编码。
●测试数据
利用教科书P148 例6-2中数据调试程序
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
实验5 图及其应用
题目一:求最短路径
1 实验目的:掌握图的基本存储方法,了解最短路径的概念,掌握求最短路径的方法
2 实验内容:
(1)建立一个包含6个结点的有向图,
2)利用Dijkstra算法求顶点v0到其它顶点的最短路径。
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
题目二:校园导游咨询
1 实验目的:掌握图的基本操作方法及应用
2 实验内容:
●问题描述:
设计一个校园导游程序,为来访的客人提供各种信息咨询服务。
●基本要求:
(1)设计你所在的学校的校园平面图,所含景点不少于5个。
以图中顶点表示校内各景点,存放景点的名称、代号、简介等信息;以边表示路径,存放路径长度
等相关信息。
(2)为来访客人提供图中任意景点相关信息的咨询。
(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
●测试数据
由同学们根据实际情况指定
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
实验6 查找及应用
题目一:顺序、折半查找
1 实验目的:熟悉并掌握顺序、折半查找的过程及方法。
2 实验内容:
(1)在输入数组的记录中顺序查找所需的数据;
(2)对已有的有序序列进行折半查找;
(3)比较以上两种方法的查找次数。
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
题目二:电话号码的查询
1 实验目的:熟练并掌握查找的过程、方法和应用
2 实验内容:
●问题描述:
设计一个电话号码查找程序,为来查询人提供电话号码的查询服务。
●基本要求:
(1)以你所在的班级为查询范围,假设人名为中国人姓名的汉语拼音形式。
人数不能少于10人。
(2)完成根据人名来查找相应的电话号码。
●测试数据
由同学们根据实际情况指定
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
实验7 排序及应用
题目一:统计成绩
1 实验目的:掌握常用的排序方法,深刻理解排序的定义和各种排序方法的特点,并能灵活应用。
2 实验内容:
(1)输入n个学生的考试成绩,每个学生信息由姓名与分数组成;
(2)选择一种排序算法,按分数高低次序,打印出每个学生的名次,分数相同的为同一名次。
(3)按名次给出每个学生的姓名与分数。
3 实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。