图形大数据结构实验
- 格式:doc
- 大小:229.59 KB
- 文档页数:14
实验三图像编码一、实验内容:用Matlab语言、C语言或C++语言编制图像处理软件,对某幅图像进行时域和频域的编码压缩。
二、实验目的和意义:1. 掌握哈夫曼编码、香农-范诺编码、行程编码2.了解图像压缩国际标准三、实验原理与主要框架:3.1实验所用编程环境:Visual C++6.0(简称VC)3.2实验处理的对象:256色的BMP(BIT MAP )格式图像BMP(BIT MAP )位图的文件结构:(如图3.1)图3.1 位图的文件结构具体组成图:单色DIB 有2个表项16色DIB 有16个表项或更少 256色DIB 有256个表项或更少 真彩色DIB 没有调色板每个表项长度为4字节(32位) 像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍biSize biWidth biHeight biPlanes biBitCount biCompression biSizeImagebiXPelsPerMeter biYPelsPerMeter biClrUsedbiClrImportantbfType=”BM ” bfSizebfReserved1 bfReserved2 bfOffBits BITMAPFILEHEADER位图文件头 (只用于BMP 文件)BITMAPINFOHEADER位图信息头Palette 调色板DIB Pixels DIB 图像数据3.3 数字图像基本概念数字图像是连续图像(,)f x y 的一种近似表示,通常用由采样点的值所组成的矩阵来表示:(0,0)(0,1)...(0,1)(1,0)(1,1)...(1,1).........(1,0)(1,1)...(1,1)f f f M f f f M f N f N f N M -⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥----⎣⎦每一个采样单元叫做一个像素(pixel ),上式(2.1)中,M 、N 分别为数字图像在横(行)、纵(列)方向上的像素总数。
数据流图实验报告篇一:软件工程实验报告篇二:需求分析实验报告软件工程实践报告计科12—1班杨光敏08123234(一)软件需求分析1.实验目的学习图形工具软件VISIO,掌握结构化需求分析方法,熟练绘制数据流图;学习快速原型工具的使用。
2.基本要求(1)针对银行ATM系统进行需求分析工作,了解银行ATM系统的功能、流程;(2)安装VISIOXX以上版本软件,熟练应用Visio绘制DFD图,绘制银行ATM系统数据流图,完成系统的软件逻辑模型;(3)安装Axure RP Pro 或者Balsamiq Mockups快速原型软件,学习绘制软件原型,完成银行ATM系统的软件原型。
3.系统概述(1)ATM系统为银行提供一套高效稳定可靠的终端服务平台,为储户登录,存款,取款,查询,打印凭条,转账,修改密码等操作提供便利。
图1 ATM工作流程(2).用户特点本软件的用户主要是银行的广大持卡人,大多都具有使用ATM经验。
另外,我们的系统要实现的一个重要目标就是当储户取钱出现故障时能在下笔业务进行之前自动恢复。
以此来方便用户和保障用户的利益。
本系统还为用户提供了足够的界面友好性和易操作性。
即使是一个对ATM系统完全陌生的客户,也可以在交易界面的提示下顺利完成交易。
另外一部分的用户是银行工作人员,本系统不予考虑。
4需求说明(1) 基本描述ATM终端可以接受一张可识别的银行储蓄卡,通过储户身份验证后,同储户进行各种交互,例如:查询、存款、取款、打印凭条等;处理储户相应的要求,执行对应操作,为储户服务。
该系统要求须保持一定时间内的交易记录,系统应每天自动汇总各种交易数据与服务器进行对账。
同时,在通讯失败或其他交易结果不确定的情况下,ATM要自动发起冲正交易,以保证账务的完整性。
本系统的实现需要记录一些相关信息,其中包括的信息有:用户信息和交易信息。
(2)交易信息卡信息:卡号,账号,密码,卡类型,卡金额ATM信息:ATM编号,ATM余额,交易流水信息:交易类型,交易代码,账号,交易时间(3)用例需求分析根据需求,做如下用例设计,在给出ATM系统需求用例图之后,我们将对各个用例逐一进行介绍。
实验04Visio 绘制工程图形1. 阅读:《未来之路》与《数字化生存》1996年,微软公司的缔造者比尔·盖茨 (Bill Gates ,图4.11)曾撰写过一本在当时轰动一时的书——《未来之路》,他在书中预测了微软乃至整个科技产业未来的走势。
盖茨在书中写道:“尽管现在看来这些预测不太可能实现,甚至有些荒谬,但是我保证这是本严肃的书,而决不是戏言。
十年后我的观点将会得到证实。
”十年后,回望盖茨的《未来之路》,部分预测已经成为现实。
1996年,一本充满洞见的《数字化生存》风靡中国,它的翻译出版曾经引发中国人对未来信息世界的狂热激情与无尽梦想,这几乎被视为中国因特网启蒙运动的开始。
而此书的作者尼古拉斯•尼葛洛庞帝 (Nicholas Negroponte ,图4-12) 也由此被称Visio 绘制工程图形 图4.11 比尔 盖茨之中国因特网的启蒙者。
尼葛洛庞帝是美国麻省理工学院教授及媒体实验室的创办人,同时也是《连线》杂志的专栏作家。
他被西方媒体推崇为“电脑与传播科技领域最具影响力的大师之一”,一直倡导利用数字化技术来促进社会生活转型。
回顾10多年来,尼葛洛庞帝的数字化生存理论已经被一一验证。
一场轰轰烈烈的数字图4.12 尼葛洛庞帝革命使中国人的生活方式、生存方式乃至思维方式发生了深刻的变革。
结合本课程的学习,建议你找出时间来阅读一下盖茨的《未来之路》与尼葛洛庞帝的《数字化生存》,尝试从广泛阅读中体会学习的乐趣与汲取丰富的知识。
阅读后,建议你找个机会和老师、同学们来分享你所获得的体会与认识。
2. 习题与思考4.1 当你要“写”一个程序时,你是在设计软件吗?什么原因使得软件设计不一致于编写程序?答:_________________________________________________________________ _________________________________________________________________________ _________________________________________________________________________ 4.2 模块独立性与信息隐蔽(反映模块化有效程度的属性) 有何关系?答:_________________________________________________________________ _________________________________________________________________________ _________________________________________________________________________ 4.3 模块的内聚性程度与该模块在分层结构中的位置有关系吗?说明你的论据。
数据库原理实验报告(3)实验三数据表的创建与管理实验南京晓庄学院《数据库原理与应⽤》课程实验报告实验三数据表的创建与管理实验所在院(系):数学与信息技术学院班级:学号::1.实验⽬的(1)理解SQL Server 2005常⽤数据类型和表结构的设计⽅法。
理解主键、外键含义,掌握建⽴各表相关属性间参照关系的⽅法。
(2)熟练掌握使⽤SQL Server Management Studio图形⼯具创建表,删除表,修改表结构,插⼊及更新数据的⽅法。
(3)熟练掌握使⽤Transact-SQL语句创建表,删除表,修改表结构,插⼊及更新数据的⽅法。
2.实验要求基本实验:(1)在实验⼆所创建的“TM”数据库中合理设计以下各表逻辑结构:学⽣信息(学号,,性别,籍贯,出⽣⽇期,民族,学院/系别号,班级号)课程信息(课程号,课程名称,课程所属模块,课程类别,学分,学时)学习信息(学号,课程号,考试成绩,平时成绩)院系信息(院系号,院系名称)要求确定各个字段的名称、类型、是否有默认值,是否主键等信息。
(2)依据你所设计的表结构,使⽤SQL Server Management Studio图形⼯具在“TM”数据库中创建学⽣信息表和课程信息表,并试验在图形界⾯中修改表结构,删除数据表,输⼊并更新数据的⽅法。
(3)依据你所设计表结构,使⽤Transact-SQL语句创建学习信息表和院系信息表,并试验使⽤T-SQL语句修改表结构,删除数据表,插⼊和更新数据的⽅法。
(4)找出已创建各表之间相关属性的参照关系,并在相关表中增加引⽤完整性约束。
(5)按要求完成实验报告。
扩展实验:(1)在“TM”数据库中补充设计以下各表结构:教师信息(教师号,,性别,出⽣⽇期,学历,学位,⼊职时间,职称,院系号)授课信息(教师号,课程号,学期)班级信息(班级号,班级名称,专业号)专业信息(专业号,专业名称,学制,学位)图书信息(图书号,书名,作者,,出版⽇期,册数,价格,分类)借书偏息(学号,图书号,借出时间,归还时间)奖励信息(学号,奖励类型,奖励⾦额)(2)设计并实现各表之间相关属性的参照关系。
TIF图像数据结构之解析为图像文件格式,此图像格式复杂,存储内容多,占用存储空间大,其大小是GIF图像的3倍,是相应的JPEG图像的10倍,最早流行于Macintosh,现在Windows主流的图像应用程序都支持此格式。
TIF文件格式最早是为了存储扫描仪图像而设计的。
它的最大的特点就是与计算机的结构、操作系统以及图形硬件系统无关。
它可处理黑白、灰度、彩色图像。
在存储真彩色图像时和BMP格式一样,直接存储RGB三原色的浓度值而不使用彩色映射(调色板)。
对于介质之间的交换,TIF称得上是位图格式的最佳选择之一。
TIF的全面性也产生了不少问题,它的包罗万象造成结构较为复杂,变体很多,兼容性较差,它需要大量的编程工作来全面译码。
例如,TIF图像数据可以用几种不同的方法压缩,用一个程序来读出所有的TIF几乎是不可能的。
TIF图一般由三个部分组成:文件头(简称IFH)、文件目录(简称IFD)、图像数据。
一、图像文件头(Image File Header)IFH数据结构包含3个成员共计8个字节(见表一):表一IFH结构描述------------------------------------------------------------名称字节数数据类型说明------------------------------------------------------------Byteorder2Integer TIF标记,其值为4D4D或4949Version2Integer版本号,其值恒为2A00Offset to first IFD4Long第一个IFD的偏移量------------------------------------------------------------表一说明1.Byteorder:可能是H4D4D或H4949,H4D4D表示该图是摩托罗拉整数格式,H4949表示该图是Intel整数格式。
计算机图形学实验报告学号:********姓名:班级:计算机 2班指导老师:***2010.6.19实验一、Windows 图形程序设计基础1、实验目的1)学习理解Win32 应用程序设计的基本知识(SDK 编程);2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。
4)学习MFC 类库的概念与结构;5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框);6)学习使用MFC 的图形编程。
2、实验内容1)使用WindowsAPI 编写一个简单的Win32 程序,调用绘图API 函数绘制若干图形。
(可选任务)2 )使用MFC AppWizard 建立一个SDI 程序,窗口内显示"Hello,Thisis my first SDI Application"。
(必选任务)3)利用MFC AppWizard(exe)建立一个SDI 程序,在文档视口内绘制基本图形(直线、圆、椭圆、矩形、多边形、曲线、圆弧、椭圆弧、填充、文字等),练习图形属性的编程(修改线型、线宽、颜色、填充样式、文字样式等)。
定义图形数据结构Point\Line\Circle 等保存一些简单图形数据(在文档类中),并在视图类OnDraw 中绘制。
3、实验过程1)使用MFC AppWizard(exe)建立一个SDI 程序,选择单文档;2)在View类的OnDraw()函数中添加图形绘制代码,说出字符串“Hello,Thisis my first SDI Application”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制;3)在类视图中添加图形数据point_pp,pp_circle的类,保存简单图形数据,通过在OnDraw()函数中调用,实现线、圆的绘制。
4、实验结果正确地在指定位置显示了"Hello,This is my first SDI Application"字符串,成功绘制了圆,椭圆,方形,多边形以及曲线圆弧、椭圆弧,同时按指定属性改绘了圆、方形和直线。
数据可视化实验总结及体会1.引言1.1 概述在本文中,我们将讨论数据可视化实验的总结及体会。
数据可视化是一种将数据以图形化形式呈现的技术,旨在帮助人们更好地理解和分析数据。
通过将数据进行可视化处理,人们可以更直观地感知数据之间的关系和趋势,从而更好地做出决策。
本文将首先介绍数据可视化实验的背景和意义,并对本次实验的目的进行概述。
接着,我们将详细阐述在实验过程中所遇到的第一个要点和第二个要点,并分析它们对数据可视化的影响和作用。
在实验的第一个要点中,我们将重点讨论数据的选择和处理方法。
选择合适的数据对于实现良好的数据可视化非常重要,因此我们将介绍如何根据需求选择合适的数据集,并讨论数据预处理的方法和技巧。
在实验的第二个要点中,我们将探讨数据可视化的具体方法和工具。
数据可视化技术众多,包括折线图、柱状图、散点图、热力图等等。
我们将介绍不同类型的图表在数据可视化中的应用场景和优缺点,以及常用的数据可视化工具和软件。
在结论部分,我们将对本次实验进行总结,回顾实验的收获和经验。
同时,我们还将分享个人在实验中的体会和感想,探讨数据可视化技术的发展趋势和未来的应用前景。
通过本文的阅读,读者将对数据可视化实验有更深入的了解,了解数据选择、处理和可视化方法的重要性,并能够从中获得一些实用的经验和启示。
希望本文能对读者在数据可视化领域的学习和研究有所帮助。
1.2 文章结构文章结构部分的内容如下:文章结构部分旨在介绍整篇长文的组织和框架,让读者对文中的内容有一个全面的了解。
本篇长文分为引言、正文和结论三个部分。
1. 引言部分旨在引入文章的主题和背景,让读者对本文要讲述的内容有一个整体的把握。
在引言部分,我们会概述本文将要讲述的数据可视化实验以及相关的重要概念和定义。
2. 正文部分是本篇文章的核心部分,主要介绍数据可视化实验的相关要点和内容。
其中,第一个要点将详细阐述数据可视化的重要性以及实验设计的方法和步骤。
第二个要点将进一步探讨数据可视化实验中所使用的工具和技术,以及在实验过程中所遇到的挑战和解决方法。
数据可视化的实验原理1.信息传递原理:数据可视化通过将数据以图形方式展示,使得数据更易于传递和理解。
人类对视觉信息的处理速度比对文字和数字的处理速度更快,更直观。
数据可视化将大量的数据以图形化的形式展现,可以帮助人们更好地抓住关键信息,快速获取数据的整体结构和趋势。
2.视觉感受原理:数据可视化利用人类的视觉感受能力,将数据转化为图形,通过颜色、形状、大小等视觉元素的变化传达数据的差异和关系。
人类对于颜色、长度、角度等视觉属性的辨识能力很强,可以从图表中迅速获取到关键信息。
3.认知心理学原理:数据可视化结合了认知心理学的知识,在设计中考虑到人类的感知、理解和记忆规律。
例如,利用图形的相对位置和大小来表达数据的比例关系,通过颜色的渐变和明度的变化来表达数据的程度差异等。
合理利用这些视觉和认知规律,可以使得数据可视化更易于理解和记忆。
4.故事叙述原理:数据可视化可以通过将数据和图形进行有机结合,用图形化的方式来叙述数据背后的故事。
通过用图表、图形等方式展示数据,可以帮助观众更好地理解数据,将数据融入到一个完整的叙述中,使数据更有说服力和影响力。
5.交互性原理:现代数据可视化工具提供了交互性的功能,使得用户可以根据自己的需求对数据进行操作和探索。
通过交互,用户可以放大、缩小、过滤、排序等操作来深入数据,发现数据背后的关联和趋势,提升数据分析的效率和准确性。
数据可视化实验的目的是验证和优化可视化设计的效果。
在实验中,通常会进行用户测试、实验设计、数据分析等步骤来评估和改进可视化设计的质量。
实验可以通过测量用户的理解、认知、注意力、记忆等方面的表现来评估可视化的效果。
总结起来,数据可视化的实验原理包括信息传递、视觉感受、认知心理学、故事叙述和交互性原理等。
这些原理的应用可以提高数据可视化的效果,使得数据更易于理解、分析和交流。
同时,数据可视化的实验可以通过用户测试和实验设计来评估和改进可视化设计的质量,为数据分析提供更好的支持。
计算机图形学实验报告
实验目的:通过本次实验,深入了解并掌握计算机图形学的基本原理和相关技术,培养对图形处理的理解和能力。
实验内容:
1. 图像的基本属性
- 图像的本质及表示方法
- 像素和分辨率的概念
- 灰度图像和彩色图像的区别
2. 图像的处理技术
- 图像的采集和处理
- 图像的变换和增强
- 图像的压缩和存储
3. 计算机图形学的应用
- 图像处理在生活中的应用
- 计算机辅助设计中的图形学应用
- 三维建模和渲染技术
实验步骤和结果:
1. 在计算机图形学实验平台上加载一张测试图像,分析其像素构成
和基本属性。
2. 运用图像处理技术,对测试图像进行模糊、锐化、色彩调整等操作,观察处理后的效果并记录。
3. 学习并掌握计算机图形学中常用的处理算法,如卷积、滤波等,
尝试应用到测试图像上并进行实验验证。
4. 探讨计算机图形学在数字媒体制作、虚拟现实、计算机辅助设计
等领域的应用案例,并总结其在实践中的重要性和价值。
结论:
通过本次实验,我对计算机图形学有了更深入的了解,掌握了图像
处理技术的基本原理和应用方法。
计算机图形学作为一门重要的学科,对多个领域有着广泛的应用前景,有助于提高数字媒体技术、虚拟现
实技术等领域的发展水平。
希望在未来的学习和工作中能进一步深化
对计算机图形学理论和实践的研究,不断提升自己在这一领域的专业
能力和创新意识。
TIF图像数据结构之解析TIF图像数据结构之解析为图像⽂件格式,此图像格式复杂,存储内容多,占⽤存储空间⼤,其⼤⼩是GIF图像的3倍,是相应的JPEG图像的10倍,最早流⾏于Macintosh,现在Windows主流的图像应⽤程序都⽀持此格式。
TIF⽂件格式最早是为了存储扫描仪图像⽽设计的。
它的最⼤的特点就是与计算机的结构、操作系统以及图形硬件系统⽆关。
它可处理⿊⽩、灰度、彩⾊图像。
在存储真彩⾊图像时和BMP格式⼀样,直接存储RGB三原⾊的浓度值⽽不使⽤彩⾊映射(调⾊板)。
对于介质之间的交换,TIF称得上是位图格式的最佳选择之⼀。
TIF的全⾯性也产⽣了不少问题,它的包罗万象造成结构较为复杂,变体很多,兼容性较差,它需要⼤量的编程⼯作来全⾯译码。
例如,TIF图像数据可以⽤⼏种不同的⽅法压缩,⽤⼀个程序来读出所有的TIF⼏乎是不可能的。
TIF图⼀般由三个部分组成:⽂件头(简称IFH)、⽂件⽬录(简称IFD)、图像数据。
⼀、图像⽂件头(Image File Header)IFH数据结构包含3个成员共计8个字节(见表⼀):表⼀IFH结构描述------------------------------------------------------------名称字节数数据类型说明------------------------------------------------------------Byteorder2Integer TIF标记,其值为4D4D或4949Version2Integer版本号,其值恒为2A00Offset to first IFD4Long第⼀个IFD的偏移量------------------------------------------------------------表⼀说明1.Byteorder:可能是H4D4D或H4949,H4D4D表⽰该图是摩托罗拉整数格式,H4949表⽰该图是Intel整数格式。
淮海工学院计算机科学系实验报告书课程名:《数据结构》题目:图形数据结构实验班级:学号:姓名:图形数据结构实验报告要求1目的与要求:1)掌握图的邻接矩阵、邻接表、十字链表、邻接多重链表存储结构表示及其创建算法的c语言实现;2)掌握图的深度优先搜索遍历算法和图的广度优先搜索遍历算法及C语言实现(预习);3)掌握AOV-网普里姆构造最小生成树算法的数据结构和算法实现(待学);4)掌握AOE-网关路经的生成算法和实现(待学);5)按照实验题目要求独立正确地完成实验内容(提交程序清单及相关实验数据与运行结果);6)认真书写实验报告,并按时提交(第12周周一提交)。
2 实验内容或题目题目:一、图形数据结构实验——图的建立与遍历。
内容:1)使用邻接矩阵和邻接表储表示分别实现如下给定的图1和或图2所示图的物理存储结构。
2)在1)所建立的图形存储结构上分别实现深度优先搜索遍历和广度优先搜索遍历,并给出遍历结果(序列)。
题目:二、连通网的最小生成树及其应用实验(暂不做)内容:对下图所示通信连通网,按照普里姆算法实现其最小生成树。
V1v6 v5 v4v3 V2 65 1 3 566 42 5例2 有向图3 实验步骤与源程序邻接矩阵#include<iostream.h>#include<malloc.h>#define MAX_VERTEX_NUM 8#define OK 1#define FALSE 0#define Error -1#define AdjType int#define OtherInfo intint visited[MAX_VERTEX_NUM];#define TRUE 1#define MAXSIZE 6typedef struct{int element[MAXSIZE];int front;int rear;}SeqQueue;typedef enum{DG,DN,UDG,UDN} GraphKind; typedef char VertexData;typedef struct ArcNode{AdjType adj;OtherInfo info;}ArcNode;typedef struct{VertexData vexs[MAX_VERTEX_NUM];ArcNode arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; int vernum,arcnum;GraphKind kind;}AdjMatrix;int LocateVertex(AdjMatrix *G,VertexData v) {int j=Error;int k;for(k=0;k<G->vernum;k++)if(G->vexs[k]==v){j=k;break;}return (j);int CreatUDG(AdjMatrix * G){int i,j,k;VertexData v1,v2;cout<<"输入无向图的顶点数和边数:"<<endl; cin>>G->vernum;cin>>G->arcnum;for(i=0;i<G->vernum;i++)for(j=0;j<G->vernum;j++)G->arcs[i][j].adj=0;cout<<"输入图的顶点:"<<endl;for(i=0;i<G->vernum;i++){cin>>G->vexs[i];}for(k=0;k<G->arcnum;k++){cout<<"输入一条边的两顶点:"<<endl;cin>>v1;cin>>v2;i=LocateVertex(G,v1);j=LocateVertex(G,v2);G->arcs[i][j].adj =1;G->arcs[j][i].adj=G->arcs[i][j].adj ;}return (OK);}void Print(AdjMatrix * G){int i,j;for(i=0;i<G->vernum;i++){for(j=0;j<G->arcnum;j++)cout<<G->arcs[i][j].adj<<" ";cout<<endl;}}void DepthFirstSearch(AdjMatrix * G,int v0) {cout<<G->vexs[v0]<<endl;visited[v0]=OK;for(int vi=1;vi<G->vernum;vi++){if(!visited[vi] && G->arcs[v0][vi].adj==1) DepthFirstSearch(G,vi);}void InitQueue(SeqQueue * Q){Q->front=Q->rear=0;}int Empty(SeqQueue * Q){if(Q->front=Q->rear=0)return (TRUE);elsereturn (Error);}int EnterQueue(SeqQueue * Q,int x) {if((Q->rear+1)%MAXSIZE==Q->front) {cout<<"队已满。
"<<endl;return (FALSE);}Q->element[Q->rear]=x;Q->rear=(Q->rear+1)%MAXSIZE;return (TRUE);}int DeleteQueue(SeqQueue * Q,int * x) {if(Q->front=Q->rear){cout<<"队空"<<endl;return(FALSE);}*x=Q->element[Q->front];Q->front=(Q->front+1)%MAXSIZE;return(*x);}int FirstAdj(AdjMatrix * G,int v) {int j,p=-1;for(j=0;j<=G->vernum;j++)if(G->arcs[v][j].adj==1){p=j;break;}return(p);}int NextAdj(AdjMatrix * G,int v,int w){int j,p=-1;for(j=w+1;j<G->vernum;j++)if(G->arcs[v][j].adj==1){p=j;break;}return(p);}void BreadthFirstSearch(AdjMatrix * G,int v0){SeqQueue * Q;Q=(SeqQueue *)malloc(sizeof(SeqQueue));InitQueue(Q);for(int i=0;i<G->vernum;i++)visited[i]=FALSE;cout<<G->vexs[v0]<<endl;visited[v0]=OK;EnterQueue(Q,v0);int v,w;while(!Empty(Q)){v=DeleteQueue(Q,&v);for(w=0;w<G->vernum;w++){if((G->arcs[v][w].adj!=0) &&(visited[w]==0)) {cout<<G->vexs[w]<<endl;visited[w] = 1;EnterQueue(Q,w);}}}}void main(){AdjMatrix * G;G=(AdjMatrix *)malloc(sizeof(AdjMatrix));CreatUDG(G);Print( G);cout<<"打印邻接矩阵"<<endl;cout<<"深度优先搜索:"<<endl;DepthFirstSearch(G,0);cout<<"广度优先搜索:"<<endl;BreadthFirstSearch(G,0);}邻接表#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <iostream.h>#define OK 1#define ERROR -1#define TRUE 1#define FALSE 0#define maxvernum 10#define maxsize (maxvernum+1)#define infinity 32768typedef struct{int element[maxsize];int front;int rear;}Seqqueue;int Enterqueue(Seqqueue *q,int x) {if((q->rear+1)%maxsize!=q->front ) {q->element [q->rear ]=x;q->rear =(q->rear +1)%maxsize;return(TRUE);}else{return(FALSE);}}int Deletequeue(Seqqueue *q,int *x) {if(q->front==q->rear){return(FALSE);}*x=q->element[q->front];q->front =(q->front +1)%maxsize; return(TRUE);}int visited[maxvernum];typedef struct Arcnode{int adjvex;struct Arcnode *nextarc;}Arcnode;typedef struct vexnode{int data;Arcnode *firstarc;}vexnode;typedef struct{vexnode vexs[maxvernum];int vexnum,arcnum;}Adjlist;int Locate(Adjlist *g,int v){int k;for(k=0;k<g->vexnum;k++){if(g->vexs[k].data==v){return k;}}return -1;}void Create(Adjlist *g){int i,j,k,v1,v2;cout<<"请输入顶点数和弧数:"<<endl;cin>>g->vexnum>>g->arcnum;for(i=0;i<g->vexnum;i++){g->vexs[i].data=i+1;g->vexs[i].firstarc=NULL;}cout<<"打印顶点数据:"<<endl;for(i=0;i<g->vexnum;i++){cout<<"a"<<g->vexs[i].data<<" ";}cout<<endl;for(k=0;k<g->arcnum;k++){cout<<"请输入第"<<k+1<<"对边:"<<endl;cin>>v1>>v2;i=Locate(g,v1);j=Locate(g,v2);if(i>=0&&j>=0){Arcnode *p,*q;p=(Arcnode *)malloc(sizeof(Arcnode));p->adjvex=j;p->nextarc=NULL;if(!g->vexs[i].firstarc)g->vexs[i].firstarc=p;else{q=g->vexs[i].firstarc;while(q->nextarc){q=q->nextarc;}q->nextarc=p;}}}cout<<"打印邻接表:"<<endl;for(i=0;i<g->vexnum;i++){if(g->vexs[i].firstarc){Arcnode *p;cout<<i+1<<" a"<<g->vexs[i].data<<"--->";p=g->vexs[i].firstarc;while(p->nextarc){cout<<(p->adjvex)+1<<"--->";p=p->nextarc ;}cout<<(p->adjvex)+1<<endl;}else cout<<i+1<<" a"<<g->vexs[i].data<<endl; }}int First(Adjlist g,int v){if(g.vexs[v].firstarc)return g.vexs[v].firstarc->adjvex;elsereturn -1;}int Next(Adjlist g,int v,int w) {int flag=0;Arcnode *p;p=g.vexs[v].firstarc;while(p){if(p->adjvex==w){flag=1;break;}p=p->nextarc;}if(flag && p->nextarc)return p->nextarc->adjvex; elsereturn -1;}void DFS(Adjlist g,int v0){if(g.vexs[v0].firstarc){Arcnode *p;cout<<g.vexs[v0].data ;visited[v0]=TRUE;p=g.vexs[v0].firstarc;while(p!=NULL){if(!visited[p->adjvex]){DFS(g,(p->adjvex));}p=p->nextarc;}}else{cout<<g.vexs[v0].data;visited[v0]=TRUE;}}void BFS(Adjlist g,int v0){Seqqueue *q;q=(Seqqueue *)malloc(sizeof(Seqqueue)); q->rear=q->front=0;int v;int w;for(;v0<g.vexnum ;v0++){if(!visited[v0]){cout<<g.vexs[v0].data ;visited[v0]=TRUE;Enterqueue(q,v0);while(q->rear!=q->front){Deletequeue(q,&v);w=First(g,v);while(w!=-1){if(!visited[w]){cout<<g.vexs[w].data;visited[w]=TRUE;Enterqueue(q,w);}w=Next(g,v,w);}}}}}void main(){Adjlist g;Create(&g);for(int i=0;i<g.vexnum;i++)visited[i]=FALSE;cout<<"深度优先遍历:";for(int v0=0;v0<g.vexnum ;v0++){if(!visited[v0])DFS(g,v0);}cout<<endl;for(i=0;i<g.vexnum;i++)visited[i]=FALSE;cout<<"广度优先遍历:";for(v0=0;v0<g.vexnum ;v0++){if(!visited[v0])BFS(g,v0);}cout<<endl;}4 测试数据与实验结果(可以抓图粘贴)邻接矩阵邻接表5 结果分析与实验体会做这次试验我感觉很吃力,邻接表,邻接矩阵都运用的不是很熟练,在书本上没有找到相应的算法,只能硬着头皮自己想办法,跟同学交流了很久才渐渐有了头绪,一开始做起来还是遇到了很多的困难。