当前位置:文档之家› 实验六 高层绘图操作

实验六 高层绘图操作

实验六   高层绘图操作
实验六   高层绘图操作

实验 高层绘图操作

一、实验目的

1、掌握绘制二维图形的常用函数

2、掌握绘制三维图形的常用函数

3、掌握绘制图形的辅助操作

二、实验内容

1、设[]23s i n 0.5c o s 1x y x x =++,在x=02π 区间取101点,绘制函数的曲线。x=0:pi/50:2.*pi

y=(0.5+3.*sin(x)/(1+x.^2)).*cos(x)

plot(x,y)

01234567-0.5-0.4

-0.3

-0.2

-0.1

0.1

0.2

0.3

0.4

0.5

2、已知y1=x 2,y2=cos 2x ,y3= y1? y2,完成下列操作:

(1)在同一坐标系下用不同的颜色和线型绘制三条曲线。 x=(0:pi/100:2.*pi)

y1=x.^2

y2=cos(2.*x)

y3=y1.*y2

plot(x,y1,'m.')

hold on

plot(x,y2,'g-.')

hold on

plot(x,y3,'y--.')

hold off

01234567

-30-20

-10

10

20

3040

(2)以子图形式绘制三条曲线。

x=(0:pi/100:2.*pi)

y1=x.^2

y2=cos(2.*x)

y3=y1.*y2

subplot(3,1,1)

plot(x,y1)

title('y1')

subplot(3,1,2)

plot(x,y2)

title('y2')

subplot(3,1,3)

plot(x,y3)

title('y3')

012345670

20

40

y1

01234567-1

1

y2

01234567-500

50

y3

(3)分别用条形图、阶梯图、杆图和填充图绘制三条曲线。

x=(0:pi/100:2.*pi)

y1=x.^2

y2=cos(2.*x)

y3=y1.*y2

subplot(3,4,1);bar(x,y1,'g')

title('bar(x,y1,"g")');axis([0,12,0,12])

subplot(3,4,2);stairs(x,y1,'b')

title('stairs(x,y1,"b")');axis([0,12,0,12])

subplot(3,4,3);stem(x,y1,'k')

title('stem(x,y1,"k")');axis([0,12,0,12])

subplot(3,4,4);fill(x,y1,'r')

title('fill(x,y1,"r")');axis([0,12,0,12])

subplot(3,4,5);bar(x,y2,'g')

title('bar(x,y2,"g")');

subplot(3,4,6);stairs(x,y2,'b')

title('stairs(x,y2,"b")');

subplot(3,4,7);stem(x,y2,'k')

title('stem(x,y2,"k")');

subplot(3,4,8);fill(x,y2,'r')

title('fill(x,y2,"r")');

subplot(3,4,9);bar(x,y3,'g')

title('bar(x,y3,"g")')

subplot(3,4,10);stairs(x,y3,'b')

title('stairs(x,y3,"b")');

subplot(3,4,11);stem(x,y3,'k')

title('stem(x,y3,"k")');

subplot(3,4,12);fill(x,y3,'r')

title('fill(x,y3,"r")');

05100

5

10

bar(x,y1,"g")05100510stairs(x,y1,"b")05100510stem(x,y1,"k")05100510fill(x,y1,"r")-10

010-10

1

bar(x,y2,"g")0510-101stairs(x,y2,"b")0510

-10

1stem(x,y2,"k")0

510-101fill(x,y2,"r")-10010-500

50

bar(x,y3,"g")0510-50050stairs(x,y3,"b")0510-50050stem(x,y3,"k")0510-50050fill(x,y3,"r")

3、已知()

22,011,02x x e y ln x x x π?+≤??=??++>??

在55x -≤≤区间绘制函数曲线

。x=-5:0.1:5

if x<=0

y=(x+sqrt(pi))/exp(2)

else

y=0.5*log(x+sqrt(1+x.^2))

end

y

plot(y)

020406080100120

-1.5-1

-0.5

0.5

1

1.5

4.绘制极坐标曲线()sin a b n ρθ=+,并分析参数a 、b 、n 对曲线形状的影响。a=input('please input a:')

b=input('please input b:')

n=input('please input n:')

theta=0:0.01:2*pi

rho=a.*sin(b+n.*theta)

polar(theta,rho,'k')

>> e5

please input a:2

a =

2

please input b:3

b =

3

please input n:4

n =

4

0.5

1

1.5 2

3021060240

90270120

300

150330

1800

5、绘制函数的曲面图和等高线22

4cos cos x y z x ye +-=

其中x 的21个值均匀分布在[-5,5]范围,y 的31个值均匀分布在[0,10],要求使用subplot (2,1,1)和subplot (2,1,2)

将产生的曲面图和等高线图画在同一个窗口上。 x=-5:0.5:5

y=0:1/3:10

[x,y]=meshgrid(x,y)

z=cos(x).*cos(y).*exp(-(sqrt(x.^2+y.^2)/4)) subplot(2,1,1)

meshc(x,y,z)

title('meshc(x,y,z)')

subplot(2,1,2)

meshz(x,y,z)

title('meshz(x,y,z') -5

0505

10

-10

1

meshc(x,y,z)-505

05

10

-101

meshz(x,y,z

6、绘制曲面图形,并进行插值着色处理。 ()()()cos cos 3cos sin 0,022sin x s t y s t s t z s ππ=??=≤≤≤≤??=?

s=0:0.05:pi/2

t=0:0.05:3*pi/2

[s,t]=meshgrid(s,t)

[x,y,z]=peaks(30)

x=cos(s).*cos(t)

y=cos(s).*sin(t)

z=sin(s)

surf(x,y,z);shading flat

-1-0.500.51

-1-0.5

0.5

1

00.20.40.60.81

实验六 图的创建及应用(I)

姓名学号 算本次实验主函数采用循环选择结构,主函数调用自己编写的头文件DataStructure_Graph.h中的相关功能函数,完成实验要求。 主程序结构: 1、邻接矩阵表示法: 1、创建有向图;//调用CreateGraph(MG)创建有向图 2、显示图信息;//调用DisplayGraph(MG) 显示图信息 3、返回上一界面; 2、邻接表表示法: 1、创建有向图; //调用CreateGraph(ALG)创建有向图 2、显示图信息;//调用DisplayGraph(ALG) 显示图信息 3、返回上一界面; 3、基于深度优先搜索判断是否存在指定位置的路径: 1、使用已创建的邻接表表示的图进行搜索判断;//调用exist_path_DFS(ALG, i, j)搜索 2、创建新的图进行搜索判断;//创建新的有向图,并调用exist_path_DFS(R_ALG, i, j)搜索 3、返回上一界面; 4、退出程序 创建图的算法分析 邻接矩阵结构创建图: 首先由键盘输入待创建的图的顶点数,弧数以及是否含有弧信息,然后由顶点数控制循环构造顶点向量,接着由顶点数控制循环初始化邻接矩阵(adj=0,info=NUll),再次输入弧信息,此时将输入的弧的弧头和弧尾与顶点信息进行匹配,从而确定弧在邻接矩阵中的位置(有弧时为1),如果输入的弧有信息的话,在进行有无弧的判断写邻接矩阵时进行绑定,有键盘输入即可。

邻接表结构创建图: 首先由键盘输入待创建的图的顶点数,弧数,然后由顶点数控制循环初始化顶点信息(顶点数据信息及顶点第一条弧指针(firstarc = NULL)),接着由弧数控制循环输入弧头和弧尾顶点,与之前建立的顶点信息进行匹配,从而确定弧头和弧尾的位置信息,此时生成一个弧结点类型的存储空间,采用单链表中在表头插入新结点的方法,将弧的信息插入到顶点的第一条弧之后,如同此法,对每个顶点都进行以上操作,这就建立了图的邻接表结构。 深度优先搜索判断是否存在指定位置的路径算法分析 首先判断指定的两个位置向量是否相等,如果相等,则肯定有路径相连,否则从指定的弧头结点开始搜索,将该顶点访问过的弧的访问标志置1,任何到该弧的弧头顶点进行如上操作,当搜索该顶点的所有弧都没有找到则返回0,然后返回上一顶点,对该顶点的其他弧进行访问。当指定顶点的所有弧都被搜索访问过都没有找到,此时程序返回0。

数据结构实验

数据结构实验指导书

实验一线性表的顺序存储结构 一、实验学时 4学时 二、背景知识:顺序表的插入、删除及应用。 三、目的要求: 1.掌握顺序存储结构的特点。 2.掌握顺序存储结构的常见算法。 四、实验内容 1.从键盘随机输入一组整型元素序列,建立顺序表。(注意:不可将元素个数和元素值写死在程序中) 2.实现该顺序表的遍历(也即依次打印出每个数据元素的值)。 3.在该顺序表中顺序查找某一元素,如果查找成功返回1,否则返回0。 4.实现把该表中某个数据元素删除。 5.实现在该表中插入某个数据元素。 6.实现两个线性表的归并(仿照课本上P26 算法2.7)。 7. 编写一个主函数,调试上述6个算法。 五、实现提示 1.存储定义 #include #include #define MAXSIZE 100 //表中元素的最大个数

typedef int ElemType;//元素类型 typedef struct list{ ElemType *elem;//静态线性表 int length; //表的实际长度 int listsize; //表的存储容量 }SqList;//顺序表的类型名 2.建立顺序表时可利用随机函数自动产生数据。 3.为每个算法功能建立相应的函数分别调试,最后在主函数中调用它们。 六、注意问题 插入、删除元素时对于元素合法位置的判断。 七、测试过程 1.先从键盘输入元素个数,假设为6。 2.从键盘依次输入6个元素的值(注意:最好给出输入每个元素的提示,否则除了你自己知道之外,别人只见光标在闪却不知道要干什么),假设是:10,3,8,39,48,2。 3.遍历该顺序表。 4.输入待查元素的值例如39(而不是待查元素的位置)进行查找,因为它在表中所以返回1。假如要查找15,因为它不存在,所以返回0。 5.输入待删元素的位置将其从表中删掉。此处需要注意判断删位置是否合法,若表中有n个元素,则合法的删除位

实验六 图

实验六图的操作 一、实验目的 1.掌握图的基本存储方法; 2.掌握有关图的操作算法并加以实现; 3.熟练掌握图的两种搜索路径的遍历方法。 二、实验原理 图是一种比树更为复杂的数据结构。图的逻辑结构是数据元素之间多对多的联系,在图中的每一个结点都可能和其它的结点相关联。图的应用范围十分广泛,诸如电子线路分析、系统工程、寻找最短路径、人工智能、计算机科学、控制论等领域。 通常有两种遍历图的方法:深度优先搜索(DFS)遍历和广度优先搜索(BFS)遍历。深度优先搜索类似于树的先序遍历,是树的先序遍历的推广,是一个递归过程。广度优先遍历类似于树的按层次遍历过程。 最小生成树是用于构造连通图的最小代价生成树,在交通、通信等领域有着广泛的应用,最小生成树有着很多种算法,典型的有Prim 算法和Kruskal 算法。 从单个源点到其余各顶点的最短路径算法的应用比较广泛,尤其是在交通联系方面。典型的实现算法有Dijkstra 算法。 三、实验内容

对图1-图3,实现以下操作,记录并分析相应的实验结果(4、5为选作): 1.输出相应图的邻接矩阵; 2.输出相应图的DFS结果; 3.输出相应图的BFS结果。 4.对图3,用Dijkstra算法求出其单源最短路径; 5.对图3,用Prim算法求出其最小生成树。 四、实验步骤 1.定义图的邻接矩阵存储形式; 2.按照流程图1所示,输出图1-图3的邻接矩阵表示法结果; 3.按照流程图2所示,实现图的DFS算法。 4.其他自行设计 五、实验提交资料 1.算法思想描述(或源代码)

2.测试结果与分析 3.收获与体会 要求:将以上资料收集齐后,撰写实验报告。 提交方式:以小组名为文件夹名,将实验源代码(项目名作为文件名)及实验报告(学号+姓名作为文件名),按照要求提交至ftp://10.10.240.14/作业1/数据结构(苑)/ 中对应的文件夹中。

数据结构_实验六_报告

实验报告 实验六图的应用及其实现 一、实验目的 1.进一步功固图常用的存储结构。 2.熟练掌握在图的邻接表实现图的基本操作。 3.理解掌握AOV网、AOE网在邻接表上的实现以及解决简单的应用问题。 二、实验内容 一>.基础题目:(本类题目属于验证性的,要求学生独立完成) [题目一]:从键盘上输入AOV网的顶点和有向边的信息,建立其邻接表存储结构,然后对该图拓扑排序,并输出拓扑序列. 试设计程序实现上述AOV网 的类型定义和基本操作,完成上述功能。 [题目二]:从键盘上输入AOE网的顶点和有向边的信息,建立其邻接表存储结构,输出其关键路径和关键路径长度。试设计程序实现上述AOE网类型定义和基本操作,完成上述功能。 测试数据:教材图7.29 【题目五】连通OR 不连通 描述:给定一个无向图,一共n个点,请编写一个程序实现两种操作: D x y 从原图中删除连接x,y节点的边。 Q x y 询问x,y节点是否连通 输入 第一行两个数n,m(5<=n<=40000,1<=m<=100000) 接下来m行,每行一对整数 x y (x,y<=n),表示x,y之间有边相连。保证没有重复的边。 接下来一行一个整数 q(q<=100000) 以下q行每行一种操作,保证不会有非法删除。 输出 按询问次序输出所有Q操作的回答,连通的回答C,不连通的回答D 样例输入

3 3 1 2 1 3 2 3 5 Q 1 2 D 1 2 Q 1 2 D 3 2 Q 1 2 样例输出 C C D 【题目六】 Sort Problem An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For example, the sorted sequence A, B, C, D implies that A < B, B < C and C < D. in this problem, we will give you a set of relations of the form A < B and ask you to determine whether a sorted order has been specified or not. 【Input】 Input consists of multiple problem instances. Each instance starts with a line containing two positive integers n and m. the first value indicated the number of objects to sort, where 2 <= n<= 26. The objects to be sorted will be the first n characters of the uppercase alphabet. The second value m indicates the number of relations of the form A < B which will be given in this problem instance. 1 <= m <= 100. Next will be m lines, each containing one such relation consisting of three characters: an uppercase letter, the character "<" and a second uppercase letter. No letter will be outside the range of the first n letters of the alphabet. Values of n = m = 0 indicate end of input. 【Output】 For each problem instance, output consists of one line. This line should be one of the following three: Sorted sequence determined: y y y… y. Sorted sequence cannot be determined. Inconsistency found.

实验六视图的定义及使用实验实验报告

实验六视图的定义及使用实验实验报告实验任务 (一)建立视图(运行并观察结果) 1.建立信息系学生的视图IS_student。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS' 2.建立信息系选修了1号课程的学生的视图IS_S1。CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept='IS'AND Student.Sno=SC.Sno AND https://www.doczj.com/doc/cf12176173.html,o='1';

3.建立信息系选修了1号课程且成绩在90分以上的学生的视图IS_S2。CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade>=90 4.建立一个反映学生出生年份的视图BT_S。 CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2004-Sage FROM Student

5.将学生的学号及他的平均成绩定义为一个视图S_G。CREATE VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno 6.将课程的课号及选修人数定义为一个视图C_XIU。CREATE VIEW C_XIU(Cno,Scount)

AS SELECT Cno,COUNT(*) FROM SC GROUP BY Cno (二)查询视图(运行并观察结果) 1.在信息系学生的视图中找出年龄小于20岁的学生。SELECT Sno,Sage FROM IS_Student WHERE Sage<20 2.查询信息系选修了1号课程的学生。 SELECT IS_Student.Sno,Sname FROM IS_Student,SC WHERE IS_Student.Sno=SC.Sno AND https://www.doczj.com/doc/cf12176173.html,o='1'

数据结构第六章实验

#include #include #include typedef struct{ unsigned int weight; unsigned int parent,lchild,rchild; }HTNode,*HuffmanTree; typedef char * *HuffmanCode; /*void Select(HuffmanTree &HT,int n,int &s1,int &s2) { s1=1;int j; for(j=1;j<=n;j++) { while(HT[j].parent==0) { if(HT[s1].weight>HT[j].weight) s1=j; } } HT[s1].parent=1; if(s1!=1)s2=1;else s2=2; for( j=1;j<=n;j++) { while(HT[j].parent==0) { if(HT[s2].weight>HT[j].weight) s2=j; } } }错误,未查出原因*/ int min(HuffmanTree t,int i) { int j,flag; unsigned int k; for(j=1;j<=i;j++) if(t[j].weight

实验六+图形界面

实验六图形界面 实验日期: 2016 年 6 月 12 日班级:软件1401 学号(后四位):__0127_______ 姓名:_程瑞强_______ 成绩: 成绩: 一.实验目的 1.掌握图形用户界面的设计方法 2.掌握常用的构建用户界面的组件的用法 3.掌握事件操作的原理 4.能够对所设计的用户界面进行事件处理 5.能够应用运算符解决实际小问题 6.进一步熟悉Java的面向对象的编程思想 二.实验题目(前2题任选1题,第3,4题任选1题) 1.采用图形界面实现两个内容的交换,图形界面如下图1所示所示: 图1 内容交换 代码如下: package TestChange; import class TestChange extends JFrame implements ActionListener{ private static final long serialVersionUID = -006L; JPanel panel;

JTextField tt1; JTextField tt2; JButton button; public TestChange(){ ("TestChange"); (355, 85); ; panel = new JPanel(); tt1 = new JTextField(10); tt2 = new JTextField(10); button = new JButton("Change"); (this); (tt1); (tt2); (button); (panel, ; (false); (true); } public static void main(String[] str){ new TestChange();

数据结构实验六 图的应用及其实现

实验六图的应用及其实现 一、实验目的 1.进一步功固图常用的存储结构。 2.熟练掌握在图的邻接表实现图的基本操作。 3.理解掌握AOE网在邻接表上的实现及解决简单的应用问题。 二、实验内容 [题目]:从键盘上输入AOE网的顶点和有向边的信息,建立其邻接表存储结构,输出其关键路径和关键路径长度。试设计程序实现上述AOE网类型定义和基本操作,完成上述功能。 三、实验步骤 (一)、数据结构与核心算法的设计描述 本实验题目是基于图的基本操作以及邻接表的存储结构之上,着重拓扑排序算法的应用,做好本实验的关键在于理解拓扑排序算法的实质及其代码的实现。 (二)、函数调用及主函数设计 以下是头文件中数据结构的设计和相关函数的声明: typedef struct ArcNode // 弧结点 { int adjvex; struct ArcNode *nextarc; InfoType info; }ArcNode; typedef struct VNode //表头结点 { VertexType vexdata; ArcNode *firstarc; }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct //图的定义 { AdjList vertices; int vexnum,arcnum; int kind; }MGraph; typedef struct SqStack //栈的定义 { SElemType *base; SElemType *top; int stacksize;

}SqStack; int CreateGraph(MGraph &G);//AOE网的创建 int CriticalPath(MGraph &G);//输出关键路径 (三)、程序调试及运行结果分析 (四)、实验总结 在做本实验的过程中,拓扑排具体代码的实现起着很重要的作用,反复的调试和测试占据着实验大量的时间,每次对错误的修改都加深了对实验和具体算法的理解,自己的查错能力以及其他各方面的能力也都得到了很好的提高。最终实验结果也符合实验的预期效果。 四、主要算法流程图及程序清单 1、主要算法流程图: 2、程序清单: 创建AOE网模块: int CreateGraph(MGraph &G) //创建有向网 { int i,j,k,Vi,Vj; ArcNode *p; cout<<"\n请输入顶点的数目、边的数目"<

数据结构实验报告图实验

邻接矩阵的实现 1. 实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现2. 实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历3.设计与编码MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; }

int vertexNum, arcNum; }; #endif MGraph.cpp #include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) { cout << "Please enter two vertexs number of edge: " cin >> i >> j; arc[i][j] = 1; arc[j][i] = 1; } }

数据结构实验四五六

数据结构实验 实验四、图遍历的演示。 【实验学时】5学时 【实验目的】 (1)掌握图的基本存储方法。 (2)熟练掌握图的两种搜索路径的遍历方法。 【问题描述】 很多涉及图上操作的算法都是以图的遍历操作为基础的。试写一个程序,演示连通的无向图上,遍历全部结点的操作。 【基本要求】 以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。 【测试数据】 教科书图7.33。暂时忽略里程,起点为北京。 【实现提示】 设图的结点不超过30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,…,n)。通过输入图的全部边输入一个图,每个边为一个数对,可以对边的输入顺序作出某种限制。注意,生成树的边是有向边,端点顺序不能颠倒。

【选作内容】 (1)借助于栈类型(自己定义和实现),用非递归算法实现深度优先遍历。(2)以邻接表为存储结构,建立深度优先生成树和广度优先生成树,再按凹入表或树形打印生成树。 (3)正如习题7。8提示中分析的那样,图的路径遍历要比结点遍历具有更为广泛的应用。再写一个路径遍历算法,求出从北京到广州中途不过郑州的所有简单路径及其里程。 【源程序】 #include #include #include #define MAX_VERTEX_NUM 20 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define TRUE 1 #define OK 1 #define FALSE 0 #define ERROR 0 #define OVERFLOW -2 typedef enum{DG,DN,UDG,UDN}GraphKind;//{有向图,有向网,无向图,无向网} bool visited[MAX_VERTEX_NUM];

实验六 图的创建及应用(I)

姓名学号

cout << endl << ">请选择功能:"; cin >> ch1; switch (ch1) { case'1': //创建有向图 { system("cls"); CreateGraph(MG); cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; } case'2': //显示图信息 { system("cls"); DisplayGraph(MG); cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; } case'3': //返回上一界面 { break; } default: { system("cls"); cout << "输入错误,请重新输入!" << endl; continue; } } system("cls"); break; } break; } case'2': { system("cls"); while (1) { minor_menu2(); char ch1;//二层菜单输入选择 cout << endl << ">请选择功能:"; cin >> ch1; switch (ch1) { case'1'://创建图信息 { system("cls"); CreateGraph(ALG); cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; }

case'2'://显示图信息 { system("cls"); DisplayGraph(ALG); cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; } case'3': //返回上一界面 { break; } default: { system("cls"); cout << "输入错误,请重新输入!" << endl; continue; } } system("cls"); break; } break; } case'3': { system("cls"); while (1) { minor_menu3(); ALGraph R_ALG; int i, j; //待搜索的顶点的位置 char ch1; //二层菜单输入选择 cout << endl << ">请选择功能:"; cin >> ch1; switch (ch1) { case'1'://使用已创建的邻接表表示的图进行搜索 { system("cls"); cout << "请输入待搜索的顶点v(i) 顶点v(j)(以空格分隔):"; cin >> i>> j; int flag = exist_path_DFS(G, i, j); if (flag) cout << "搜索成功!存在顶点v(i):" << G.vertices[i].data << "顶点v(j):" << G.vertices[j].data << "的路径" << endl; else cout << "搜索失败!不存在顶点v(i):" << G.vertices[i].data << "到顶点v(j):" << G.vertices[j].data << "的路径" << endl; cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; } case'2': //创建新图进行搜索 { system("cls");

数据结构实验报告六 图

云南大学软件学院数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 学期:2010秋季学期 任课教师: 张德海 实验题目: 图及其应用 姓名: 申平 学号: 20091120185 电子邮件: 完成提交时间: 2010 年 12 月 27 日

云南大学软件学院2010学年秋季学期 《数据结构实验》成绩考核表 学号:姓名:本人承担角色: 综合得分:(满分100分) 指导教师:年月日(注:此表在难度为C时使用,每个成员一份。)

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分) 一、【实验构思(Conceive)】(10%) 1.本演示程序中,元素限定为char型。 2.演示程序以用户和计算机的对话方式执行,即在计算机终端显示“提示信息“后,由用户在 键盘上输入符合演示程序中规则的图的边数,结点数;相应的先序和按层遍历会显示其后。 3.程序执行命令包括:1)根据用户给出的图字符串进行对临接表的先序构建2)输出构建的临 接表 4.测试数据 用户输入:abc//d//e// 结果:DLR:abcde LDR:cbdae LRD:cdbea Ceng:abecd 用户输入:ab/cd///e// 结果:DLR:abcde LDR:bdcae LRD:dcbea Ceng:abecd 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 为实现上述程序功能,需要三个抽象数据类型:队列和图 1.图的抽象数据类型定义为: ?ADT Graph{ ?数据对象V:顶点集 ?数据关系R:R={VR} ?VR={|v,w V,表示从v到w的弧} ?基本操作: ?CreateGraph(&G,V,VR); //构造图 ?DestroyGraph(&G); //销毁图 ?LocateVex(G,u); //顶点u在图中位置 ?GetVex(G,v);//取顶点v的值 ?PutVex(&G,v,value); //顶点v赋值

实验6 游标的应用(完整版)

数据库实验六游标 实验要求: (1)参照例7-3建立一个嵌套游标应用,其功能是按学号升序列出全体学生信息(学号、姓名、院系名称)及其所修课程名称和考试成绩信息(基于实验2建立的表和实验3插入的数据) (2)按要求按要求逐一读出游标中的记录并显示。 实验代码: declare@xh nchar(8),@xm nchar(10),@yx nchar(10) declare@kcmc nchar(8),@cj nchar(10) declare嵌套游标1cursor for select学生.学号,学生.姓名,学生.院系from学生order by学号 open嵌套游标1 print'----学生信息----' print'学号姓名院系' fetch from嵌套游标1into@xh,@xm,@yx while@@FETCH_STATUS=0 begin print@xh++@xm++@yx declare嵌套游标2cursor for select课程.课程名称,选课.成绩from选课join课程 on课程.课程编号=选课.课程编号 where选课.学号=@xh open嵌套游标2 print'课程名称成绩' fetch from嵌套游标2into@kcmc,@cj while@@FETCH_STATUS=0 begin print@kcmc+@cj fetch from嵌套游标2into@kcmc,@cj end close嵌套游标2 deallocate嵌套游标2 fetch from嵌套游标1into@xh,@xm,@yx end close嵌套游标1 deallocate嵌套游标1

实验六 视图的创建和使用

实验六视图的创建和使用 开课实验室:指导老师: 学院:专业(班级): 姓名:学号: 一、实验目的与要求 1)理解视图的概念 2)掌握利用企业管理器和CREATE VIEW命令创建视图方法。 3)熟悉修改视图、查看视图和删除视图的方法。 4)掌握通过视图修改数据表的方法 二、实验过程设计及实验步骤 创建视图是数据库应用中的常见需求,可以使用企业管理器创建、管理视图,也可以用T-SQL语句创建、管理视图。 1)在企业管理器中创建如下视图:在XSGL数据库中使用表STUDENT和SCORE 创建视图VIEW_STUDENTSCROE,来查询每个学生的姓名和选课情况。 2)在查询分析器中创建视图:将上题用CREATE VIEW 来创建,视图名为VIEW2 程序代码: 3)查看视图信息:使用系统存储过程SP_HELP、SP_HELPTEXT、SP_DEPENDS 4)删除视图:将视图VIEW2删除. 三、SQL调试及结果 创建视图是数据库应用中的常见需求,可以使用企业管理器创建、管理视图,也可以用T-SQL语句创建、管理视图。 1)在企业管理器中创建如下视图:在XSGL数据库中使用表STUDENT和SCORE 创建视图VIEW_STUDENTSCROE,来查询每个学生的姓名和选课情况。

2)在查询分析器中创建视图:将上题用CREATE VIEW 来创建,视图名为VIEW2 程序代码: CREATE VIEW VIEW2 AS SELECT STUDENT.SNAME,https://www.doczj.com/doc/cf12176173.html,O FROM STUDENT,SCORE 3)查看视图信息:使用系统存储过程SP_HELP、SP_HELPTEXT、SP_DEPENDS 执行代码;SP_HELPTEXT VIEW2

数据结构实验六 图

实验六图 一、实验目的 1、掌握图的基本存储方法和相关术语 2、掌握图的两种搜索路径的遍历方法 3、理解最小生成树的有关概念及普里姆(Prim)和克鲁斯卡尔算法 4、掌握图的有关应用 二、实验要求 1、认真阅读程序。 2、上机调试,并运行程序。 3、保存和截图程序的运行结果,并结合程序进行分析。 三、实验内容和基本原理 1、实验6.1 建立无向图的邻接矩阵存并输出 给出一个无向图,求它的邻接矩阵(见参考程序1): 2、实验6.2 建立图的邻接存储并在此基础上实现图的深度优先遍历和广度优先遍历 #include #include #define MAX 20 typedef int VexType; typedef VexType Mgraph[MAX][MAX]; void creat_mg(Mgraph G); void output_mg(Mgraph G); Mgraph G1; int n,e,v0; void main() { creat_mg(G1); output_mg(G1); } void creat_mg(Mgraph G) {

int i,j,k; printf("\n 请输入无向图的顶点数和边数,如: 6,5:"); scanf("%d,%d",&n,&e); for(i=1;i<=n;i++) for(j=1;j<=n;j++) G[i][j]=0; for(k=1;k<=e;k++) { printf("\n请输入每条边的两个顶点编号,如:2,5 :"); scanf("%d,%d",&i,&j); G[i][j]=1; G[j][i]=1; } } void output_mg(Mgraph G) { int i,j; for(i=1;i #include #define MAX 20 typedef int VexType; typedef struct Vnode { VexType data; struct Vnode *next; }Vnode; typedef Vnode Lgraph[MAX]; typedef struct { int V[MAX]; int front; int rear; }Queue; void creat_L(Lgraph G);

java实验报告实验六Java图形用户界面

信息工程学院 Java程序设计实习报告 JAVA图形用户界面 实验六Java图形用户界面 1.实验目的 (1)掌握图形用户界面基本组件。 (2)了解如何使用布局管理器对组件进行管理。 (3)掌握Java事件处理机制。 2.实验内容 实验题1 编写一个模拟计算器的程序,使用面板和网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式和结果显示在文本框中。 运行结果: 实验报告的内容与格式按任课教师的要求书写。

加法: 主要代码: private void initComponents() { jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jButton7 = new javax.swing.JButton(); jButton8 = new javax.swing.JButton(); jButton9 = new javax.swing.JButton(); jButton10 = new javax.swing.JButton(); jButton11 = new javax.swing.JButton(); jButton12 = new javax.swing.JButton(); jButton13 = new javax.swing.JButton(); jButton14 = new javax.swing.JButton(); jButton15 = new javax.swing.JButton(); jTextField1 = new javax.swing.JTextField();

数据结构实验(6)图的应用

计算机系数据结构实验报告(6) 实验目的: 图是应用极为广泛的数据结构,也是这门课程的重点,继续使学生更了解数据结构加操作的程序设计观点。 问题描述: 给出一张某公园的导游图,游客通过终端询问可知: a)从某一景点到另一个景点的最短路径。 b)游客从公园大门进入,选一条最佳路线,使游客可以不重复的游览各景点,最后回到出口。实验要求: 1、将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离,选择适当的数据结构。 2、为游客提供图中任意景点相关信息的查询; 3、为游客提供任意两个景点之间的一条最短的简单路径。 4、为游客选择最佳游览路径。 算法分析: 1、设计公园平面图,选择适当的数据结构; 2、设计图的最短路径算法,如果有几条路径长度相同,选择途径景点较少的路径给游客; 3、设计图的深度优先搜索算法,如果有多种路径可选,则选带权路径最短的路线给游客;实验内容和过程: 源程序: #include using namespace std; #include #define INFINITY INT_MAX #define MAX_VERTEX_NUM 20 #define VRType int #define InfoType int #define VertexType char #define MAX 10 #define FALSE 0 #define TRUE 1 typedef enum{DG,DN,UDG,UDN}GraphKind; typedef struct ArcCell { VRType adj; InfoType *info; }ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct { VertexType vexs[MAX_VERTEX_NUM]; AdjMatrix arcs; int vexnum,arcnum; GraphKind kind;

实验6、缓冲区分析应用(综合实验)

实验6、缓冲区分析应用(综合实验)

实验六、缓冲区分析应用(综合实验) 一、实验目的 缓冲区分析是用来确定不同地理要素的空间邻近性和邻近程度的一类重要的空间操作,通过本次实习,我们应达到以下目的: 1.加深对缓冲区分析基本原理、方法的认识; 2.熟练掌握距离制图创建缓冲区技术方法。 3.掌握利用缓冲区分析方法解决地学空间分析问题的能力。 二、实验准备 数据准备:图层文件point.shp,lline.shp,polygon.shp 三、实验内容及步骤 1. 距离制图-创建缓冲区 1.1 点要素图层的缓冲区分析 1)在ArcMap中新建地图文档,加载图 层:StudyArea ,point 2)打开Arctoolbox,执行命令-<欧几里德距 离>,按下图所示设置各参数

注:在ArcView GIS 3.x中Find Distance 功能与ArcGIS 中<<欧几里德距离>制图功能相同。 点击“环境设置”按钮 设置“常规选项”中的“输入范围”,使其与

StudyArea 相同 3)显示并激活由point.shp产生的 新栅格主题,eucdist_poin(如上图)。 在进行分析时,若选中了point图层中的某一个或几个要素,则缓冲区分析只对该要素进行;否则,对整个图层的所有要素进行。 1.2 线要素图层的缓冲区分析 1)在ArcMap中,新建地图文档,加 载line图层,点击常用工具栏中的将 地图适当缩小。

2)分别选中图层line中的两条线,进 行缓冲区分析,注意比较线的缓冲区分析与点的缓冲区分析有何不同。 方法:打开Arctoolbox,执行命令-<欧几里德距离>; 设置“环境设置”中“常规选项”中的“输出范围”为“Same As Display”

实验六 图及其应用

数据结构实验六图及其应用 1、实验目的 ?熟练掌握图的两种存储结构(邻接矩阵和邻接表)的表示方法 ?掌握图的基本运算及应用 ?加深对图的理解,逐步培养解决实际问题的编程能力 2、实验内容: 采用邻接表或邻接矩阵方式存储图,实现图的深度遍历和广度遍历; 用广度优先搜索方法找出从一顶点到另一顶点边数最少的路径。 1.问题描述:利用邻接表存储结构,设计一种图(有向或无向),并能够对其进行 如下操作: 1)创建一个可以随机确定结点数和弧(有向或无向)数的图; 2)根据图结点的序号,得到该结点的值; 3)根据图结点的位置的第一个邻接顶点的序号,以及下一个邻接顶点的序号; 4)实现从第v 个顶点出发对图进行深度优先递归遍历; 5)实现对图作深度优先遍历; 6)实现对图进行广度优先非递归遍历; 编写主程序,实现对各不同的算法调用。 2.实现要求:(以邻接表存储形式为例)编写图的基本操作函数:: 对图的各项操作一定要编写成为C(C++)语言函数,组合成模块化的形式,每个算 法的实现要从时间复杂度和空间复杂度上进行评价。 1)“建立图的邻接表算法”:CreateGraph(ALGraph *G) 操作结果:采用邻接表存储结构,构造没有相关信息的图G 2)“邻接表表示的图的递归深度优先遍历算法”:DFSTraverse(ALGraph G,void(*Visit)(char*)) 初始条件:图G 已经存在; 操作结果:返回图的按深度遍历的结果。 3)“邻接表表示的图的广度优先遍历算法”:BFSTraverse(ALGraph G,void(*Visit)(char*)) 初始条件:图G 已经存在; 操作结果:返回图的按广度遍历的结果。 4)“邻接表从某个结点开始的广度优先遍历算法”:BFS(ALGraph G, int v) 初始条件:图G 已经存在; 操作结果:返回图从某个结点开始的按广度遍历的结果。 分析: 修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。 3、实验指导 本实验以图的邻接表存储结构为例,要求完成基本要求,同时对无向图,有向网,无向网也一并实现其相关的操作,课后同学们可以用邻接矩阵式存储结构完成以上操作。 1.首先将图的链接存储结构定义放在一个头文件:如取名为ALGraphDef.h。 2.链接表式存储图的基本操作也放在一个文件中ALGraphAlgo.h.

相关主题
文本预览
相关文档 最新文档