图的基本操作
Photoshop应用基础(第3版)第5章 图层的基本操作
第五章 图层的基本操作
(4)在“模式”框中选择图层的着色模式。该选项与绘
图工具时所使用的着色模式是相同的。 (5)在“不透明度”框中设置图层的不透明度,当数值 为100%时表示图层为全透明。如果想制作出一些若隐若 现的朦胧图像效果时,可以在这里进行调整。
(6)选择项“与前一图层编组”用于设定是否与前一图
组合键:“Ctrl+[” 使该图层向下移动一层,“Ctrl+]”使该 图层向上移动一层;“Ctrl+Shift+[” 可以使图层移到最下 一层,“Ctrl+Shift+]” 可以使图层移到最上一层。
第五章 图层的基本操作
四、图层的链接和合并 当多个图层效果链接起来,可以一起挪动链接的图 层。链接图层的方法如下: (1)在图层调板中选择图层或图层组。 (2)点按紧靠要链接到所选图层的任何图层左边的列, 该列中会出现链接图标 。
第五章 图层的基本操作
在Photoshop系统中可以通过拖动图层图标的方法来 改变图层的次序,具体操作步骤如下: (1)欲调整“图层1”和“图层2”的次序, 首先选择要移动次序的图层。 (2)利用鼠标将“图层2”拖动到“图层1” 和“背景”层之间,松开鼠标,此时“图层 1”和“图层2”交换了位置。
第五章 图层的基本操作
第五章 图层的基本操作
第一节 图层的基本操作
一、图层的新建和删除 1、使用菜单命令创建图层 (1)选择菜单【图层】—【新建】—【图层】命令,则会 在屏幕上弹出“新图层”对话框。 (2)在对话框中的“名称”文本框中输入新建图层的名称。 系统默认的名称为“图层1”。 (3)在“颜色”框中选择一 种颜色作为新建图层的标 致色,这是为了便于区分 各个图层而设定的,与图 层中使用什么颜色无关。 系统默认为“无”。
图的定义和基本操作
图的定义和基本操作
一、图的定义 二、图的基本术语 三、图的基本操作
一、图的定义
图(Graph)是由顶点的有限集合和描述顶点关系的有限集合组成的。
G=(V, R)
V是图G中顶点的有限
V={v0, v1, v2, …, vn}
ห้องสมุดไป่ตู้
集合,称为顶点集
R={VR}
VR={<vi, vj> | vi, vj∈V且P(vi, vj)}
⑧ InsertVex (G, v):图G存在,在G中增加一个新顶点v。 ⑨ DeleteVex (G, v):图G存在,v是G中某个顶点,删除顶点v及其相关 联的弧。 ⑩ InsertArc (G, v, w):图G存在,v和w是G中两个顶点,在G中增加一条 从顶点v到顶点w的弧或边。 ⑪ DeleteArc (G, v, w):图G存在,v和w是G中两个顶点,删除G中从顶 点v到顶点w的弧或边。
⑫ DFSTraverse (G):图G存在,对G进行深度优先遍历。
⑬ BFSTraverse (G):图G存在,对G进行广度优先遍历。
数据结构
生成树
三、图的基本操作
① CreateGraph (G):构造图G。 ② DestoryGraph (G):图G存在,销毁图G。 ③ LocateVex (G, v):图G存在,若图G中存在顶点v,则返回顶点v在图 中的位置;否则返回0。 ④ GetVex (G, v):图G存在,v是G中某个顶点,返回v的值。 ⑤ PutVex (G, v, value):图G存在,v是G中某个顶点,将value值赋给v。 ⑥ FirstAdjVex (G, v):图G存在,v是G中某个顶点,返回v的第一个邻接 点;若v无邻接点,则返回空。 ⑦ NextAdjVex (G, v, w):图G存在,v是G中某个顶点,w是v的邻接顶点, 返回v的(相对于w的)下一个邻接顶点;若w是v的最后一个邻接顶点, 则返回空。
图的基本操作 实验报告
图的基本操作实验报告图的基本操作实验报告引言:图是一种常见的数据结构,广泛应用于计算机科学和其他领域。
本实验报告旨在介绍图的基本操作,包括创建图、添加节点和边、遍历图等,并通过实验验证这些操作的正确性和效率。
实验目的:1. 了解图的基本概念和术语;2. 掌握图的创建和修改操作;3. 熟悉图的遍历算法;4. 分析图的操作的时间复杂度。
实验过程:1. 创建图首先,我们需要创建一个图对象。
图可以用邻接矩阵或邻接表来表示。
在本实验中,我们选择使用邻接表来表示图。
通过遍历输入的节点和边信息,我们可以创建一个包含所有节点和边的图。
2. 添加节点和边在创建图对象后,我们可以通过添加节点和边来构建图的结构。
通过输入节点的标识符和边的起始和结束节点,我们可以在图中添加新的节点和边。
添加节点和边的操作可以通过修改邻接表来实现,将节点和边的信息存储在对应的链表中。
3. 遍历图遍历图是图操作中常用的操作之一。
通过遍历图,我们可以访问图中的所有节点和边。
在本实验中,我们选择使用深度优先搜索(DFS)算法来遍历图。
DFS算法通过递归的方式遍历图中的节点,先访问当前节点,然后再递归地访问与当前节点相邻的节点。
4. 分析时间复杂度在实验过程中,我们记录了图的操作所花费的时间,并分析了它们的时间复杂度。
通过对比不同规模的图的操作时间,我们可以评估图操作的效率和可扩展性。
实验结果:通过实验,我们成功创建了一个图对象,并添加了多个节点和边。
我们还通过DFS算法遍历了图,并记录了遍历的顺序。
实验结果表明,我们的图操作实现正确,并且在不同规模的图上都能够高效地工作。
讨论与结论:本实验报告介绍了图的基本操作,并通过实验验证了这些操作的正确性和效率。
通过实验,我们了解到图是一种重要的数据结构,可以用于解决许多实际问题。
同时,我们还深入分析了图操作的时间复杂度,为后续的图算法设计和优化提供了参考。
总结:通过本次实验,我们对图的基本操作有了更深入的了解。
图的基本操作与应用
图的基本操作与应用图是一种重要的数据结构,广泛应用于计算机科学和相关领域。
本文将介绍图的基本操作和常见的应用场景,通过详细讲解来帮助读者更好地理解和应用图。
一、图的定义和表示图是由节点(顶点)和边组成的集合。
节点表示实体,边表示节点之间的关系。
图可以用以下方式进行表示:邻接矩阵和邻接表。
1. 邻接矩阵:用二维数组表示图的连接关系,其中数组元素a[i][j]表示节点i到节点j是否存在一条边。
2. 邻接表:使用链表或数组的方式表示节点的连接关系。
每个节点对应一个链表,链表中存储与该节点相连接的其他节点。
二、图的基本操作1. 添加节点:图中可以通过添加节点来增加实体。
添加节点时,需要更新相应的连接关系,即在邻接矩阵或邻接表中添加对应的行或节点。
2. 添加边:向图中添加边可以表示节点之间的关系。
在邻接矩阵中,将对应的元素设置为1。
在邻接表中,将对应的节点添加到该节点的链表中。
3. 删除节点:从图中删除节点时,需要将与该节点相关的边一并删除。
删除节点后,对应的行或链表也需要进行相应的调整。
4. 删除边:删除边可以断开节点之间的关系。
在邻接矩阵中,将对应的元素设置为0。
在邻接表中,删除对应的节点。
三、图的应用场景1. 社交网络分析:图可以用于分析社交网络中的关系,如朋友关系、粉丝关系等。
可以通过图的遍历算法,寻找潜在的朋友或影响力人物。
2. 路径规划:图可以表示地理空间中的路径,如导航系统中的道路网络。
可以使用图的最短路径算法,如Dijkstra算法或A*算法,来计算最优路径。
3. 组织架构图:图可以用于表示组织或公司的架构,帮助人们更好地理解不同部门之间的关系和沟通路径。
4. 网络流量分析:图可以用于分析网络中的流量,如网络路由、数据传输等。
可以通过图的最大流算法,如Ford-Fulkerson算法,来优化网络流量分配和传输效率。
5. 数据库关系图:图可以用于表示数据库中的关系表,帮助人们理解和查询表之间的关系,如主外键关系等。
数据结构试验报告-图的基本操作
中原工学院《数据结构》实验报告学院:计算机学院专业:计算机科学与技术班级:计科112姓名:康岩岩学号:201100814220 指导老师:高艳霞2012-11-22实验五图的基本操作一、实验目的1、使学生可以巩固所学的有关图的基本知识。
2、熟练掌握图的存储结构。
3、熟练掌握图的两种遍历算法。
二、实验内容[问题描述]对给定图,实现图的深度优先遍历和广度优先遍历。
[基本要求]以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。
以用户指定的结点为起点,分别输出每种遍历下的结点访问序列。
【测试数据】由学生依据软件工程的测试技术自己确定。
三、实验前的准备工作1、掌握图的相关概念。
2、掌握图的逻辑结构和存储结构。
3、掌握图的两种遍历算法的实现。
四、实验报告要求1、实验报告要按照实验报告格式规范书写。
2、实验上要写出多批测试数据的运行结果。
3、结合运行结果,对程序进行分析。
【设计思路】【代码整理】#include "stdafx.h"#include <iostream>#include <malloc.h>using namespace std;typedef int Status;#define OK 1#define ERROR 0#define OVERFLOW -1#define MAX_SIZE 20typedef enum{DG,DN,UDG,UDN}Kind;typedef struct ArcNode{int adjvex; //顶点位置struct ArcNode *nextarc; //下一条弧int *info; //弧信息};typedef struct{char info[10]; //顶点信息ArcNode *fistarc; //指向第一条弧}VNode,AdjList[MAX_SIZE];typedef struct{AdjList vertices;int vexnum,arcnum; //顶点数,弧数int kind; //图的种类,此为无向图}ALGraph;//这是队列的节点,仅用于广度优先搜索typedef struct Node{int num;struct Node* next;};//队列的头和尾typedef struct{Node * front;Node *rear;}PreBit;int LocateV ex(ALGraph G,char info[]);//定位顶点的位置Status addArcNode(ALGraph &G,int adjvex); //图中加入弧Status CreatGraph(ALGraph&G);//创建图的邻接表Status DFSTraverse(ALGraph G);//深度优先搜索Status BFSTraverse(ALGraph G);//广度优先搜索Status DFS(ALGraph G,int v);//深度优先搜索中的数据读取函数,用于递归bool visited[MAX_SIZE]; // 访问标志数组//初始化队列Status init_q(PreBit&P_B){P_B.front=P_B.rear=(Node*)malloc(sizeof(Node));if(!P_B.front){exit(OVERFLOW);}P_B.front->next=NULL;}//将数据入队Status en_q(PreBit & P_B,int num){Node *p=(Node*)malloc(sizeof(Node));if(!p){exit(OVERFLOW);}p->num=num;p->next=NULL;P_B.rear->next=p;P_B.rear=p;return OK;}//出队Status de_q(PreBit & P_B){if(P_B.front==P_B.rear){return ERROR;}Node* p=P_B.front->next;P_B.front->next=p->next;if(P_B.rear==p){P_B.rear=P_B.front;}free(p);return OK;}Status CreatGraph(ALGraph&G){cout<<"请输入顶点数目和弧数目"<<endl;cin>>G.vexnum>>G.arcnum;//依次输入顶点信息for(int i=0;i<G.vexnum;i++){cout<<"请输入顶点名称"<<endl;cin>>G.vertices[i].info;G.vertices[i].fistarc=NULL;}//依次输入弧信息for(int k=1;k<=G.arcnum;k++){char v1[10],v2[10]; //用于表示顶点名称的字符数组int i,j; //表示两个顶点的位置BACK: //返回点cout<<"请输入第"<<k<<"条弧的两个顶点"<<endl;cin>>v1>>v2;i=LocateV ex(G,v1); //得到顶点v1的位置j=LocateV ex(G,v2); //得到顶点v2的位置if(i==-1||j==-1){ //头信息不存在则返回重输cout<<"不存在该节点!"<<endl;goto BACK; //跳到BACK 返回点}addArcNode(G,i); //将弧的顶点信息插入表中addArcNode(G,j);}return OK;}//倒序插入弧的顶点信息Status addArcNode(ALGraph &G,int adjvex){ArcNode *p; //弧节点指针p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=adjvex;p->nextarc=G.vertices[adjvex].fistarc;//指向头结点的第一条弧G.vertices[adjvex].fistarc=p; //头结点的第一条弧指向p,即将p作为头结点的第一条弧return OK;}//定位顶点的位置int LocateV ex(ALGraph G,char info[]){for(int i=0;i<G.vexnum;i++){if(strcmp(G.vertices[i].info,info)==0){ //头结点名称与传入的信息相等,证明该头节点存在return i; //此时返回位置}}return -1;}//深度优先搜索Status DFSTraverse(ALGraph G){for(int v=0;v<G.vexnum;v++){visited[v]=false;}char v1[10];int i;BACK:cout<<"请输入首先访问的顶点"<<endl;cin>>v1;i=LocateV ex(G,v1);if(i==-1){cout<<"不存在该节点!"<<endl;goto BACK;}DFS(G,i);return OK;}//深度优先搜索递归访问图Status DFS(ALGraph G,int v){visited[v]=true;cout<<G.vertices[v].info<<" ";//输出信息ArcNode *p;p=G.vertices[v].fistarc; //向头节点第一条while(p) //当弧存在{if(!visited[p->adjvex]){DFS(G,p->adjvex); //递归读取}p=p->nextarc;}return OK;}//广度优先搜索Status BFSTraverse(ALGraph G){for(int v=0;v<G.vexnum;v++){visited[v]=false;}char v1[10];int v;BACK:cout<<"请输入首先访问的顶点"<<endl;cin>>v1;v=LocateV ex(G,v1);if(v==-1){cout<<"不存在该节点!"<<endl;goto BACK;}PreBit P_B;init_q(P_B);ArcNode *p;visited[v]=true;cout<<G.vertices[v].info<<" ";//输出信息en_q(P_B,v); //将头位置v入队while(P_B.front!=P_B.rear){//当队列不为空时,对其进行访问int w=P_B.front->next->num;//读出顶点位置de_q(P_B);//顶点已经访问过,将其出队列p=G.vertices[w].fistarc;//得到与顶点相关的第一条弧while(p){if(!visited[p->adjvex]){en_q(P_B,p->adjvex);//将弧入队,但不读取,只是将其放在队尾}p=p->nextarc;}}return OK;}int _tmain(int argc, _TCHAR* argv[]){ALGraph G;CreatGraph(G);cout<<"深度优先搜索图:"<<endl;DFSTraverse(G);cout<<endl;cout<<"广度优先搜索图:"<<endl;BFSTraverse(G);cout<<endl;system("pause");return 0;}。
图的基本操作及应用
武 夷 学 院课程设计报告课程名称: 数据结构设计题目: 图的基本操作及应用 学生班级: 学生姓名: 指导教师:完成日期:2012.5.30数学与计算机系课程设计项目研究报告目录第 1 章项目简介 (3)1.1 项目名称 (3)1.2 开发人员 (3)1.3 指导教师 (3)第 2 章项目研究意义 (3)2.1 课程设计概述 (3)第3章课程设计项目进度表 (4)第4 章课程设计任务分配表 (5)第5 章达到的效果 (6)图5—1 6 5.2 图的数据类型定义表 (7)第6 章源程序 (17)第7 章附录 (28)(1)图的基本操作及应用 (28)(2)二叉树的遍历 (29)第8 章设计心得 (29)第9 章参考文献 (30)第 1 章项目简介1.1 项目名称(1)图的基本操作及应用(2)二叉树的遍历1.2 开发人员1.3 指导教师第 2 章项目研究意义2.1 课程设计概述(1)图是一种比树更为复杂的一些的非线性结构。
在图状结构中,任意两个结点之间都可能具有邻接关系,也就是在图的数据元素之间存在多对多的关系。
所以图状结构可以描述任意结点之间的关系,例如各种线性结构和树形结构,这些都可以看做图这种结构的特例。
于是,从某种意义上讲,图应该是一种最基本的数据结构。
图是一种应用极为广泛的数据结构。
比如,在供电网络分析、交通运输管理、市政管线铺设、工作进度安排等诸多方面,都常采用图状结构来模拟各种复杂的数据对象。
当前,它的应用已经渗透到了计算机科学、社会科学、人文科学、工程技术等各个领域。
本设计基于图的结构,创建一个无向图,基于设计要求,我们对要求进行编号,让用户可以自由选择操作,我们可以将各个顶点的数据域储存所需的信息,可以用深度遍历或者广度遍历对信息进行访问,也可以删除顶点的数据。
这对于很多操作系统都是很需要的。
1本程序的功能是对任意二叉树进行递归前序遍历和后序遍历 用栈实现非递归的前序、和后序遍历 还有对树的层序遍历以及树与二叉树的转换。
图的操作C语言课程设计
图的操作C语言课程设计一、教学目标本课程的教学目标是使学生掌握图的操作的基本概念、原理和方法,能够运用C语言实现图的基本操作,如建立图、查找顶点、边的相关操作等。
通过本课程的学习,使学生具备以下知识目标:1.理解图的基本概念,如顶点、边、度、相邻顶点等。
2.掌握图的存储结构,如邻接矩阵、邻接表等。
3.熟悉图的基本操作,如添加和删除顶点、边,查找顶点、边的相关操作等。
4.能够使用C语言实现图的基本操作。
5.能够运用图的操作解决实际问题,如最短路径问题、最小生成树问题等。
情感态度价值观目标:1.培养学生的团队合作意识,通过实验和项目使学生学会与他人合作解决问题。
2.培养学生的创新思维,鼓励学生尝试新的方法解决问题。
3.培养学生对计算机科学的兴趣,激发学生继续学习计算机科学的热情。
二、教学内容本课程的教学内容主要包括图的基本概念、图的存储结构、图的基本操作以及图的应用。
具体安排如下:1.图的基本概念:介绍图的定义、顶点、边、度等基本概念。
2.图的存储结构:介绍邻接矩阵、邻接表等图的存储方式。
3.图的基本操作:介绍添加和删除顶点、边,查找顶点、边的相关操作等。
4.图的应用:介绍图的应用场景,如最短路径问题、最小生成树问题等。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
1.讲授法:通过讲解图的基本概念、原理和方法,使学生掌握图的基础知识。
2.讨论法:通过分组讨论,使学生深入理解图的操作和应用。
3.案例分析法:通过分析实际案例,使学生学会运用图的操作解决实际问题。
4.实验法:通过上机实验,使学生动手实现图的操作,巩固所学知识。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《C语言程序设计》2.参考书:《数据结构与算法》3.多媒体资料:PPT课件、教学视频等4.实验设备:计算机、网络等以上教学资源将帮助学生更好地学习图的操作,提高学生的编程能力和解决问题的能力。
Photoshop基本操作
Photoshop 基础教学
2.1 调整图像的尺寸及方向
调整照片大小的操作是我们经常会遇到的,例如证件照需要上传到网上的报名系统,要求尺寸 在高度500像素以内。将相机拍摄的照片作为手机壁纸,需要将横版照片裁剪为竖版照片。想要将 图片的大小限制在1M以下等等。
2.1.1调整图像尺寸
想要调整照片的尺寸,可以使用“图像大小”命令。选择需要调整尺寸的文件,执行“图像> 图像大小”命令,打开“图像大小”窗口。
Photoshop 基础教学
2.6.3 智能参考线
“智能参考线”是一种会在绘制、移动、变换等情况下自动出现的参考线,可以帮助我们对齐 特定对象。例如当我们使用“移动工具”移动某个图层时。移动过程中与其他图层对齐时就会显 示出洋红色的智能参考线,而且还会提示图层之间的间距。
Photoshop 基础教学
执行“图像>裁切”命令,在弹出的窗口中可以选择基于哪个位置的像素的颜色进行裁切,然 后设置裁切的位置。若勾选“左上角像素颜色”选项,则以将画面中与左上角颜色同样颜色的像 素裁切掉。
Photoshop 基础教学
2.1.6 旋转画布
使用相机拍摄照片时,有时会由于相机朝向使照片横着或者竖了起来,这些问题可以通过“图 像>图像旋转”下的子命令解决。
Photoshop 基础教学
2.1.3 使用裁剪工具
当我们想要裁掉画面中的部分内容时,最方便的就是使用工具箱中的“裁剪工具”直接在画面 中绘制出需要保留的区域即可。
Photoshop 基础教学
2.1.4 使用透视裁剪工具
“透视裁剪工具” 可以在对图像进行裁剪的同时调整图像的透视效果,常用于去除图像中的 透视感,或者在带有透视感的图像中提取局部,也可以为图像添加透视感。
工程制图CAD操作基础
工程制图CAD操作基础一、制图基本操作程序:1、建立图形界线:菜单中“格式”—图形界线—空格-输数字“X,Y”—空格---“Z”—空格—“E”---空格。
2、建立图层图层是透明的电子纸张,点开图层特性管理器,图层的属性:线型,线宽,线的颜色。
新建图层,可删除,打√为当前图层。
名称单击可修改。
菜单中“格式”—线型—“显示细节”—更改“全局比例因子”---一般为20—50注:当前对象缩放比例—不改,1)、图层关闭后图形不可见,但能绘制不可打印。
2)、图层锁定后,图形可见,不能编辑,可打印。
3)、图层冻结后不可见,不可绘制,不能编辑,不可打印。
3、操作必须在英文状态才能操作。
4、使用坐标确定点1)、绝对直角坐标(X,Y)2)、相对直角坐标(@X,Y)相对坐标是相对上一点而言,闭会—C—空格,二、常用的命令:1、画直线:L—空格—输数值—空格,2、偏移:O—空格---输偏移数值—空格---选对象—往偏移方向点。
封闭图形可整体偏移,针对封闭图形只偏移单线:XL—空格—O—空格3、对象捕捉F3,栅格F7,正交F8,捕捉F9、极轴F10,对象追综F114、修剪:TR 修剪必须是两根相交线才能操作。
TR—空格—选择1)、TR—空格—选择—空格—剪哪选哪2)、TR—空格—选择边界对象3)、TR—空格—空格--剪哪选哪4)、TR—空格—空格—按住shift—选择延伸的对象5)、TR--空格—空格—F--空格(快速修剪)一次最多可修两条。
6)、TR--空格—空格—E--空格--E—空格(假设延伸修剪)5、延伸:EX--空格—空格—延伸谁就点谁延长线:可点击线,光标拖动蓝块线条延长6、镜像:(对象性复制)mi--空格—选择对象--空格—指定对象线的一点—F8---是否—是选Y或N (Y是删除原图,N是保留原图)7、移动:m-空格—选定对象点—右击对象捕捉—打开中点—点击---空格8、旒转: RORO--空格—选择对象—旒转中心—点下一点或输180度—空格9、复制:CO--空格—选择对象---空格三、常用的操作:1、垂足、延伸、中点、交点、端点等单右击捕捉对象—设置—打开选择,一般画图要关闭捕捉。
图像基础操作方法包括
图像基础操作方法包括
图像基础操作方法包括:
1. 图像读取:从硬盘上读取图像文件,并将其加载到内存中,以便进行后续处理。
2. 图像显示:将加载到内存中的图像显示在屏幕上,让用户可以观看图像内容。
3. 图像保存:将处理过的图像保存到硬盘上的文件中,以便后续使用或分享。
4. 图像复制:将一幅图像的内容复制到另一幅图像中,用于图像的叠加或合成。
5. 图像裁剪:根据指定的坐标和尺寸,在图像中选取某个区域,获取感兴趣的图像部分。
6. 图像缩放:调整图像的尺寸大小,可以放大或缩小图像,改变图像的显示效果。
7. 图像旋转:将图像绕某个中心点进行旋转,可以按照不同角度进行顺时针或逆时针旋转。
8. 图像灰度化:将彩色图像转换为灰度图像,降低图像的维度,方便后续处理。
9. 图像二值化:将灰度图像转换为二值图像,根据阈值将像素值转化为黑色或白色。
10. 图像平滑:对图像进行平滑处理,减少图像的噪声或纹理,提升图像的质量。
11. 图像锐化:增强图像的边缘和细节,使图像的轮廓更加清晰和鲜明。
12. 图像滤波:应用不同滤波器对图像进行处理,如高斯滤波、中值滤波等,改变图像的频域特征。
13. 图像边缘检测:提取图像中的边缘信息,用于图像分割和物体识别。
14. 图像配准:将多幅图像进行校准和对齐,以便进行图像融合和信息提取。
15. 图像变换:对图像进行几何变换,如平移、缩放、旋转等,改变图像的位置和形状。
这些方法是进行图像处理和分析的基础操作,常用于计算机视觉、图像识别、医学影像等领域。
《CAD绘图软件基本操作培训》ppt课件(图文)
• SPL(样条曲线)SPLINE
• I(插入块)DDINSERT
• POL(正多边形)POLYGON • REC(矩形) RECTANGLE
• DIV(等分)DIVIDE • H(填充)BHATCH
• C (圆) CIRCLE
• A (圆弧) ARC
• DO(圆环) DONUT
2、修改命令: • CO(复制)COPY • MI(镜像)MIRROR • AR(阵列)ARRAY • O(偏移)OFFSET • RO(旋转)ROTATE • M(移动)MOVE • E/DEL键(删除)ERASE • X(分解)EXPLODE • TR(修剪)TRIM
选择“绘图”|“边界”命令(BOUNDARY),打开“边界创建”对话框 来定义面域。此时,在“对象类型”下拉列表框中选择“面域”选项,单击
“确定”按钮后创建的图形将是一个面域。
3、长度测量
CAD中进行距离查询的方法大概也有三种:两点之间距离查询、规则 图形对象查询、不规则图形对象查询。
对于两点之间距离查询,可直接利用距离查询命令(DI),选择起始 点与终点,点击F2命令文本窗口查看即可。
以黑白版式保存 DWG图纸
选择“打 PEG图片 文件
选择类型
另存为
对于不规则或者重合相交的对象,一般先创建面域,利用 工具菜单中的面积查询功能(aa)。
对于多对象面积总和统计,也是利用工具菜单中的面积查 询功能(aa),按照命令提示操作“加模式(A)”。
2、创建面域
由某些对象围成的封闭区域(圆、椭圆、封闭的二维多段线和封闭的样 条曲线等)都可以转化为面域。
选择“绘图”|“面域”命令(REGION),按照命令提示操作,选择一个 或多个用于转换为面域的封闭图形,按下回车/空格后即可将它们转换为面域。
Office2007办公应用 图片的基本操作
Office2007办公应用图片的基本操作在Word文档中插入图片之后,用户可以根据自己的需要更改图片的大小,或者对齐进行裁切,同时还可以对图片的位置、排列方式、旋转角度进行设置。
1.调整图片大小若要在文档中调整图片的大小,用户可以利用鼠标、功能区或者对话框等多种方式来进行。
●利用鼠标调整图片大小选择要调整大小的图片,将光标置于该图片周围的控制块上,当光标变成“双向”箭头形状时,拖动鼠标即可调整图片的大小,如图4-4所示。
拖动图4-4 利用鼠标调整图片大小●利用功能区调整大小选择图片,并选择【格式】选项卡。
然后,在【大小】组的【形状高度】和【形状宽度】微调框中分别输入具体的数值,如输入3和4,并按Enter键即可,如图4-5所示。
设置图4-5 利用功能区调整图片大小●利用对话框调整图片大小选择要调整大小的图片,单击【大小】组中的【对话框启动器】按钮,在弹出的【大小】对话框中,即可设置图片的高度和宽度,如图4-6所示。
设置图4-6 利用对话框调整图片大小2.裁剪图片在文档中使用图片时,有时仅需要图片中的某一部分,此时就需要对图片进行裁剪操作。
若要裁剪图片,需要先选择该图片,并单击【大小】组中的【裁剪】按钮。
此时,图片周围将出现8个剪裁控制柄,用户只需拖动任意一个控制柄即可对图片进行裁剪,如图4-7所示。
拖动图4-7 裁剪图片3.设置图片排列方式默认情况下,图片和剪贴画均以嵌入的方式插入文档,当一些图片处理功能对嵌入图片无效时,便可以更改图片的排列方式。
更改图片位置图片在文档中的位置主要包括嵌入文本行和文字环绕两类,其中文字环绕又可以分为9种不同的排列方式,如图4-8所示。
图4-8 不同位置的图片示意图若要更改图片的位置,只需选择要更改位置的图片,并选择【格式】选项卡,单击【排列】组中的【位置】选项卡,在其下拉列表中选择所需选项即可,如选择“顶端居左,四周型文字环绕”选项,如图4-9所示。
选择图4-9 更改图片位置设置环绕方式Word内置的环绕方式包括嵌入型、四周型环绕、紧密型环绕、衬于文字下方、衬于文字上方、上下型环绕以及穿越型环绕七种。
图的基本操作实验报告
图的基本操作实验报告图的基本操作实验报告一、引言图是计算机科学中常用的数据结构之一,它由节点和边组成,用于表示事物之间的关系。
图的基本操作是对图进行增、删、改、查等操作,本实验旨在通过编程实现图的基本操作,加深对图的理解。
二、实验目的1. 理解图的基本概念和表示方法;2. 掌握图的基本操作,包括节点的插入、删除,边的添加、删除等;3. 运用图的基本操作解决实际问题。
三、实验方法本实验使用Python编程语言实现图的基本操作。
首先,定义图类,包括图的初始化、节点的插入、删除,边的添加、删除等方法。
然后,根据实际需求设计测试用例,验证图的基本操作的正确性。
四、实验过程1. 图的初始化在图类的初始化方法中,创建一个空的字典用于存储节点和边的信息。
节点用唯一的标识符表示,边用包含两个节点标识符的元组表示。
2. 节点的插入编写节点插入方法,接收节点标识符作为参数,将节点添加到图中。
在添加节点时,需要判断节点是否已存在于图中,如果存在则不进行插入操作。
3. 节点的删除编写节点删除方法,接收节点标识符作为参数,将节点从图中删除。
在删除节点时,需要同时删除与该节点相关的边。
4. 边的添加编写边添加方法,接收两个节点标识符作为参数,将边添加到图中。
在添加边时,需要判断节点是否存在于图中,如果不存在则先进行节点的插入操作。
5. 边的删除编写边删除方法,接收两个节点标识符作为参数,将边从图中删除。
在删除边时,需要判断边是否存在于图中。
6. 测试用例设计设计多个测试用例,包括插入节点、删除节点、添加边、删除边等操作,并验证操作的正确性。
七、实验结果经过多次测试,图的基本操作均能正常运行,符合预期结果。
通过图的基本操作,可以方便地对图进行增、删、改、查等操作,解决实际问题。
八、实验总结通过本次实验,我深入理解了图的基本概念和表示方法,并掌握了图的基本操作。
图作为一种重要的数据结构,在计算机科学中有着广泛的应用,例如社交网络分析、路线规划等领域。
JDpaint图形的基本编辑操作
图形编辑7.1 图形的基本编辑操作本章介绍图形的有关编辑操作命令,包括以下三类:1、基本编辑操作命令,如撤消与重做、复制和粘贴、删除等;2、曲线编辑操作命令,如曲线裁剪与延伸、等距、倒角等;3、区域操作命令,如区域构造、等距、焊接、剪裁、求交等。
可以点击“编辑”菜单中的各子菜单项(图7-1)或“编辑”工具条中的各按钮(图7-2)来执行相应的命令操作。
图7-1编辑菜单图7-2编辑工具条7.1 图形的基本编辑操作图形的基本编辑操作包括撤消与重做、剪贴、复制、粘贴和删除等。
1、撤消和重做可以帮助用户更改绘图中的误操作,返回到前面某一命令的操作状态。
2、剪切、复制、粘贴和删除是最基本的复制和删除图素的四个命令。
其中前三个均与Windows的剪贴板有关。
3、在不同的工具状态下,剪切、复制、粘贴的对象可能不同,例如,在文字编辑状态下,上述操作是对当前正在编辑的字符串的被选字符进行的,而在对象选择工具下,则是对被选对象整体进行操作。
7.1.1 撤消撤消上一步命令的执行。
实现方法:直接启动撤消命令。
操作步骤:说明:1、一些命令包含自身的撤消选项,用户无需退出此命令的执行便可取消上一步操作。
如在创建多义线命令执行过程中,可以撤消上一曲线段的绘制;2、并不是所有命令的执行结果都能够被撤消,如系统设置和各种观察命令等。
7.1.2 重做取消上一步“撤消”命令的执行结果。
实现方法:直接启动重做命令。
操作步骤:说明:1、本命令必须立即跟随在“撤消”命令之后,若在“撤消”命令后又执行了其它的命令后,本命令将可能失效;2、在系统设置中定义了系统最大撤消和重做的次数,参照系统设置。
7.1.3 剪切删除选定的图素并将它们存储到剪贴板上,以供粘贴使用。
实现方法:(1)选择图素;(2)启动剪切命令。
操作步骤:7.1.4 复制将选定的图素复制一份到剪贴板上,以供图形粘贴时使用。
实现方法:(1)选择图素;(2)启动复制命令。
操作步骤:7.1.5 粘贴将剪贴板中存储的图素粘贴到当前文件中。
制图软件的基本操作指南
制图软件的基本操作指南随着科技的不断进步,制图软件在各行各业中得到了广泛应用。
无论是工程设计、建筑规划还是市场营销,制图软件都成为了不可或缺的工具。
然而,对于初学者来说,使用制图软件可能会感到困惑。
本文将为大家提供一份基本操作指南,帮助你轻松掌握制图软件的使用技巧。
一、界面介绍首次打开制图软件,你会看到一个包含多个工具和菜单栏的界面。
不同的软件可能有不同的布局,但一般都会包含绘图区、工具栏和属性面板。
1. 绘图区:这是你进行绘图操作的主要区域。
你可以在这里绘制图形、添加文本、插入图片等。
2. 工具栏:工具栏通常位于界面的顶部或左侧,包含各种绘图工具,如画笔、选择工具、橡皮擦等。
你可以通过单击工具栏上的图标选择相应的工具。
3. 属性面板:属性面板用于调整图形的属性,如颜色、线条粗细、字体等。
在选中图形后,你可以在属性面板上进行相应的调整。
二、基本操作当你熟悉了界面的基本布局后,就可以开始进行基本操作了。
下面是几个常用的操作技巧:1. 绘制基本图形:选择绘图工具(如画笔或矩形工具),在绘图区点击并拖动画出相应的图形。
你还可以选择填充或描边颜色来美化图形。
2. 编辑图形:选中已绘制的图形后,你可以进行以下操作:- 移动:使用选择工具选中图形,然后拖动它到新的位置。
- 调整大小:在选中图形后,你可以拉伸边缘或拖动角落来调整大小。
- 旋转:选择旋转工具,然后拖动图形的角度调整图形的旋转角度。
3. 图层管理:制图软件通常支持图层功能,它可以帮助你更好地组织和管理图形。
你可以新建图层、删除不需要的图层、调整图层的顺序等。
4. 文本编辑:选择文本工具,然后在绘图区点击并输入文字。
你可以调整字体、字号、颜色等属性来美化文字。
三、高级技巧除了基本操作外,还有一些高级技巧可以帮助你进一步提升制图软件的应用水平。
1. 使用图形库:制图软件通常会提供各种图形库,你可以从中选择并插入图标、符号或已设计好的图形。
这样可以节省你的绘图时间,并使作品更加专业。
机械制图应用操作方法
机械制图应用操作方法
机械制图是一种图形化的表达方法,用于表示物体的形状、尺寸与结构,并作为制造和组装物体的依据。
以下是一些机械制图的常见应用操作方法:
1. 理解图纸标准:熟悉和了解国家或行业标准的机械图纸符号、尺寸标注等基本要求,掌握图纸的绘制规范。
2. 理解图纸的图块:图块是指将整体的机械零件分解成几个部分,便于清楚地展示每个细节。
掌握图块的标准形式和符号,并将其正确应用于图纸中。
3. 绘制基本几何图形:机械制图中常见的图形包括直线、圆、弧、椭圆、多边形等。
学会使用绘图工具如直尺、圆规、量角器等工具,在图纸上准确地绘制这些基本几何图形。
4. 使用投影方法:机械制图中常用的投影方法包括主视图、俯视图、左视图、右视图等。
了解不同视图之间的关系,能够根据需要绘制出具体的视图。
5. 标注尺寸:机械制图中尺寸标注非常重要,它们表明了物体的实际尺寸。
学会使用标注工具,将尺寸标注清晰地添加到图纸中,并符合相应的标准。
6. 绘制零件细节:机械制图中还需要绘制零部件的细节,包括孔、键槽、螺纹等。
了解这些细节的符号和标记,并将它们准确地添加到零件图上。
7. 绘制装配图:机械制图中的装配图用于展示多个零件如何组装在一起。
学会使用装配图的符号和约定,并能够根据装配过程绘制出清晰的装配图。
8. 基本图纸阅读:学会阅读和理解机械图纸上的各种符号、标记和文字说明,能够正确解读图纸上的意义和信息。
以上是机械制图的一些基本应用操作方法,通过学习和实践这些方法,可以提高理解和应用机械图纸的能力。
CAD快速看图基本操作
CAD快速看图基本操作CAD快速查看图纸的基本操作包括以下几个方面:1.操作页面操作页面分为工作区、工具栏和模型/布局栏。
工作区主要用于显示图纸和进行图纸标注。
工具栏的各个功能,可以满足我们对图纸进行简单测量、修改、标注、注释等操作的需求。
2.打开图纸第一项是打开图纸,我们可以通过这个功能打开我们想要查看和使用的CAD图纸。
3.最近打开第二项是最近打开,可以显示我们最近打开过的图纸,方便我们快速找到需要的文件,节省时间。
4.窗口缩放第四项是窗口,单击左键会弹出下拉菜单,其中包括全图和窗口缩放两种模式。
全图模式可以显示当前图纸中所有的CAD图纸。
窗口缩放模式可以显示我们框选范围内的图纸。
具体操作方法是单击窗口,然后单击窗口缩放,选择要放大的图纸的左上角,点击鼠标左键不放,拖动鼠标到右下角,最后松开鼠标。
5.图层管理第五项是图层管理,单击后会弹出图层管理对话框,里面包括一些工具栏:恢复初始、图层全开、图层全关、关闭选定图层和保留选定图层等功能。
恢复初始功能可以快速恢复到第一次打开图纸时的图纸情况。
图层全开功能可以将图纸所有图层全部打开并显示在工作区。
图层全关功能可以将图纸所有图层全部关闭并不显示在工作区内。
单击图层前面的小灯泡图标可以单独关闭某一图层,灯泡图标变灰色表示关闭,变黄色表示打开。
6.撤销和恢复第六项和第七项是撤销和恢复功能。
撤销可以撤销上一次操作,可连续撤销;恢复可以恢复上一次操作,可连续恢复。
7.测量工具条第九项是测量,单击后会弹出详细的测量工具条,包括对齐、线性、面积、矩形面积、坐标标注和设置标注比例等功能。
对齐功能可以测量图纸内斜长的距离。
操作方法是单击一点,单击另一端一点,测量出尺寸后,拖动鼠标,放置测量尺寸位置,最后单击确认位置。
线性功能可以测量图纸内正交的距离(x/y方向)。
操作方法是单击一点,单击另一端一点,测量出尺寸后,拖动鼠标,放置测量尺寸位置,最后单击确认位置。
本文介绍CAD快速看图工具栏的一些功能。
工程制图基本操作手册
工程制图基本操作手册第1章工程制图基本知识 (4)1.1 图纸的规格与标准 (5)1.1.1 图纸幅面 (5)1.1.2 图框与标题栏 (5)1.1.3 图线 (5)1.1.4 字体 (5)1.2 制图工具及其使用方法 (5)1.2.1 铅笔 (5)1.2.2 直尺 (5)1.2.3 三角板 (6)1.2.4 圆规 (6)1.2.5 比例尺 (6)1.3 制图符号与标注规范 (6)1.3.1 制图符号 (6)1.3.2 尺寸标注 (6)1.3.3 文字标注 (6)1.3.4 引线标注 (6)第2章基本图形绘制 (6)2.1 点、直线、圆的绘制 (7)2.1.1 点的绘制 (7)2.1.2 直线的绘制 (7)2.1.3 圆的绘制 (7)2.2 多边形、椭圆、曲线的绘制 (7)2.2.1 多边形的绘制 (7)2.2.2 椭圆的绘制 (7)2.2.3 曲线的绘制 (8)2.3 图形的组合与分解 (8)2.3.1 图形的组合 (8)2.3.2 图形的分解 (8)第3章图形的修改与编辑 (8)3.1 图形的移动、复制与删除 (8)3.1.1 图形的移动 (8)3.1.2 图形的复制 (9)3.1.3 图形的删除 (9)3.2 图形的旋转、镜像与缩放 (9)3.2.1 图形的旋转 (9)3.2.2 图形的镜像 (9)3.2.3 图形的缩放 (9)3.3 图形的修剪、延伸与倒角 (10)3.3.1 图形的修剪 (10)3.3.2 图形的延伸 (10)3.3.3 图形的倒角 (10)第4章尺寸标注与文字注释 (10)4.1 尺寸标注的基本原则 (10)4.1.1 尺寸标注应准确无误,符合国家制图标准及相关规定。
(10)4.1.2 尺寸标注应清晰可见,便于阅读,避免产生歧义。
(10)4.1.3 尺寸标注应简洁明了,避免重复和冗余。
(10)4.1.4 尺寸标注应遵循一致性原则,保持全文统一。
(10)4.2 线性尺寸、半径与直径尺寸标注 (10)4.2.1 线性尺寸标注 (10)4.2.1.1 线性尺寸标注用于表示零件的长度、宽度、高度等线性尺寸。
图形的基本操作
图形的基本操作
图形的基本操作一图形的选择方法。
点选:用光标点击图片。
框选:用方框选择一个或多个图片,要选择的图片必须全部在方框内。
像上图选的是中间的两个了。
松开左键。
多(挑)选:用CTRL+键全选方法有两种:ctrl+拖选ctrl+D,非常好用。
二图形的复制。
Ctrl+D是一种非常好用的方法,按住ctrl+D进行拖动光标,要多少个可以拖多少个。
要使图片之间等距离用F4键。
先调整两图片之间的距离,再点击选择第二个
图片,按F4键进行拖动。
非常好。
三.绘图常用技巧.以中心绘图方法,如以矩形的一个顶点为中心画一个圆,矩形……。
插入一个基本图形,把
十字星光标移到矩形的顶点,按住ctrl+拖动可绘出隋圆或圆。
若按住ctrl+shift+拖动可画圆(1:1)。
四.图形绘制的好帮手。
“视图选项”“普通视图”“显示”点击网格线和参考线的选项,再在第一第二项中打扣。
画一个矩形会被吸到网格线上去,这就是网格。
还有
图形之间的对齐。
参考线对齐。
还以中心对齐相互对齐。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈尔滨工业大学计算机科学与技术学院实验报告课程名称:数据结构课程类型:必修实验项目名称:第三次实验实验题目:图的基本操作班级:10803102学号:1080310225姓名:陈虞付一、实验目的实现有向图、无向图的基本操作。
二、实验要求及实验环境实验要求:实现有向图、无向图的基本操作(建立连接表,邻接矩阵,深度优先搜索,广度优先搜索等)。
实验环境: windows 平台、 code :: blocks 集成开发环境。
三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)1.逻辑设计主程序的流程:定义邻接表 gl 、bool 型数组 visited[] 。
程序开始时,先初始化邻接表,然后提示图是否有向,输入选择,调用 MainMenue()函数到主菜单的选择界面,根据输入的选择调用相应的函数、实现相应的逻辑功能。
2.物理设计程序功能:以文件方式方式输入的无 / 有向图,实现无 / 有向图的邻接表、邻接矩阵求解及对图的深度优先遍历、广度优先遍历操作。
输入:将要求解的无 / 有向图按规则输入对应的文件输出:通过主菜单的选择,按需实现对图的各种操作,显示结果并保存到相应的文件中。
源程序说明:头文件: graphics.h函数实现: graphics.cpp主函数: main.cpp存放的文件说明:无向图: graphics1.txt存放格式为第一行存放图的顶点数有向图: graphics2.txt 存放格式为第一行存放图的顶点数无向图邻接表: adjlist1.txt有向图邻接表: adjlist2.txt无向图邻接矩阵: adjmatrix1.txt 有向图邻接矩阵: adjmatrix2.txt 所有抽象数据类型的定义如下:// 定义邻接表的边节点类型struct EdgeNode n ,边数b ,下面每行存放两个相邻顶点:Vi,Vj n ,下面每行存放两个相邻顶点Vi-->Vj :Vi,Vjint adjvex;EdgeNode *next;};// 定义邻接表类型typedef EdgeNode **ADJLIST;各模块的具体实现程序是: Graphicscpp各模块的的功能及参数说明: graphics.h 如下:// 对图操作的主菜单void MainMenue();// 初始化邻接表void InitialAdjList(ADJLIST &GL, int n);// 以文件方式输入图//bool InputGraphics();// 建立图的邻接表void CreatAdjList(ADJLIST &GL, int &n, int m); // 建立图的邻接矩阵void CreatAdjMatrix(ADJLIST &GL, int &n, int m);// 从初始点出发深度优先搜索由邻接表 GL 表示的图 void DFSAdjList(ADJLIST GL, bool *&visited, int i, int n);//从初始点出发广度优先搜索由邻接表GL表示的图void BFSAdjList(ADJLIST GL, bool *&visited, int i, int n);四、测试结果1、图是否有向的选择、主菜单界面:2、建立邻接表的测试结果:3、建立邻接矩阵的测试结果:10 10 00 1&1 01 0» 1a0 sa& 01»9@a1aaaa& 0a aa 0» 0» 0U B1 10 0& 11 Ua aa Ho 00 0a 0a ao 0» 09 3aa999181&&a98@»a19a& 0a aa 0» 0» 0a 0o 00 0& 0& Ua a& H& 00 0a 1a ao 0» 01 3aa999a81@»aB&9a&888 _[阵已保存到孔町mat vi_xla984、广度优先搜索的测试结果:「建立图的邻2盧立图的勺遷尿5 •退出v阵oo o表矩图图亠克更请输入你的选择;3图朗广度优先遍历序列;1 5 20 6 423 I? 7 14 9 12 135、深度优先搜索的测试结果:8»U9aaaB119a80 3 -txt0 a0 00 a中!*HCiHf图的探度优先遍历序列:1 5 20 6 423 1? 7 11 ? 12 136、退出界面:五、系统不足与经验体会系统不足:异常处理不够健壮,不能够用很形象的方式打印图的直观图。
经验体会:通过这次实验使我对图有了比较深入的了解,熟悉了图的基本操作,同时也感受到了看似简单的程序实现,真正做起来很费劲,有很多的 困难需要去克服。
六、 附录:源代码(带注释) graphics.h 源代码如下:#ifndef GRAPHICS_H #define GRAPHICS_Hstruct EdgeNode{WM-M-W M-H MM ««M*|l£3OO£JCl£aCJOCjCJft)Cf Ul line XJHltXMKitMLJCJWM ■:KHLHJW3 1 •建立图的邻援表。
2 •建立图苗邻摟矩阵。
乳深 乳广 5 •退出*遍历图。
遍历图。
情输入你的选择;4 "表矩图图 fe極历历的的先先图®立V度度岀建建棵广退£ ulme 冬5'pocecs returned 1 C0xl> execution tine : 24.146 £ f rees anu keu tocontinuie.MMQM12 2 4 5-Mint adjvex;EdgeNode *next;};// 定义邻接表的边节点类型// 定义邻接表类型typedef EdgeNode **ADJLIST;// 对图操作的主菜单void MainMenue();// 初始化邻接表void InitialAdjList(ADJLIST &GL, int n);// 以文件方式输入图//bool InputGraphics();// 建立图的邻接表void CreatAdjList(ADJLIST &GL, int &n, int m);// 建立图的邻接矩阵void CreatAdjMatrix(ADJLIST &GL, int &n, int m);// 从初始点出发深度优先搜索由邻接表 GL 表示的图 void DFSAdjList(ADJLIST GL, bool *&visited, int i, int n);// 从初始点出发广度优先搜索由邻接表 GL 表示的图 void BFSAdjList(ADJLIST GL,bool *&visited, int i, int n);#endifGraphics.cpp 源代码如下:#include <iostream>#include <stdio.h>#include <stdlib.h>#include <stdio.h>#include "graphics.h"#define MAX_SIZE 100 using namespace std;// 部分函数原型声明void Check(int n, int &i, int &j);void InitialAdjList(ADJLIST &GL, int n);// 全局变量 ,控制递归函数中提示符的输出 int flag = 1; void MainMenue()// 对图操作的主菜单}/* End of MainMuenue() */ voidInitialAdjList(ADJLIST &GL, int n)// 初始化图的邻接表cout<<"\n *************************************** "<<endl; cout<<"** cout<<"** cout<<"** cout<<"** cout<<"** cout<<"** cout<<"****"<<endl; 1.建立图的邻接表。
**"<<endl ;2.建立图的邻接矩阵。
**"<<endl ;3.深度优先遍历图。
**"<<endl ; 4.广度优先遍历图。
**"<<endl ; 5.退出。
**"<<endl ;**"<<endl;******************** cout<<" 1************ fulme "<<endl;{GL = new EdgeNode*[n];for (int i = 1; i <= n; i++)GL[i] = NULL;}/* End of InitialAdjlist() */void CreatAdjList(ADJLIST &GL, int &n, int m)// 建立图的邻接表{FILE *in1;FILE *in2;FILE *out1;FILE *out2;int i;int j;int k;int b;char ch;int flag = 0;if (m == 0)// 建立无向图的邻接表if ((in1 = fopen("graphics1.txt", "rb")) == NULL){cout<<" 打开 graphics1.txt 失败! "<<endl;exit(1);}if ((out1 = fopen("adjlist1.txt", "wb")) == NULL){cout<<" 打开 adjlist1.txt 失败! "<<endl; flag = 1;}// 读入顶点的个数 , ",", 边数 fscanf(in1, "%d", &n); fscanf(in1, "%c", &ch); fscanf(in1, "%d", &b);for (k = 0; k < b; k++){fscanf(in1, "%d", &i); fscanf(in1, "%c", &ch);fscanf(in1, "%d", &j);Check(n, i, j);// 向序号为 i 的单链表的表头插入一个边结点EdgeNode *p = new EdgeNode;p -> adjvex = j;p -> next = GL[i];GL[i] = p;// 向序号为 j 的单链表的表头插入一个节点p = new EdgeNode;p -> adjvex = i;p -> next = GL[j];GL[j] = p;}// 输出邻接表 ,并保存到 adjlist1.txt 中cout<<endl<<"\n====================="<<endl; cout<<" 无向图的邻接表为: "<<endl;for (i = 1; i <= n; i++){EdgeNode *p = GL[i];cout<<i - 1<<" |"<<"V"<<i;fprintf(out1, "%c", 'V');fprintf(out1, "%d", i);for (p = GL[i]; p != NULL; p = p -> next){cout<<"|-|->|"<<p -> adjvex;fprintf(out1, "%s", "|-|->|");fprintf(out1, "%d", p -> adjvex);}cout<<"|A|"<<e ndl;fprin tf(out1, "%s", "|A|");fprintf(out1, "\r\n");}if (flag)cout<<" 无向图的邻接表已保存到 adjlist1.txt中"<<e ndl;fclose(in1);fclose(out1);}else if (m == 1)// 建立有向图的邻接表{if ((in2 = fopen("graphics2.txt", "rb")) == NULL)cout<<" 打开 graphics2.txt 失败! "<<endl;exit(1);}if ((out2 = fopen("adjlist2.txt", "wb")) == NULL) {cout<<" 打开 adjlist2.txt 失败! "<<endl;flag = 1;}// 读入顶点的个数 , ",", 边数fscanf(in2, "%d", &n);fscanf(in2, "%c", &ch);fscanf(in2, "%d", &b);for (k = 0; k < b; k++){fscanf(in2, "%d", &i);fscanf(in2, "%c", &ch);fscanf(in2, "%d", &j);Check(n, i, j);// 向序列号为 i 的表头插入一个边节点EdgeNode *p = new EdgeNode;p -> adjvex = j;p -> next = GL[i];GL[i] = p;}// 输出图的邻接表cout<<endl<<"\n====================="<<endl; cout<<" 有向图的邻接表为: "<<endl;for (i = 1; i <= n; i++){EdgeNode *p = GL[i];cout<<i - 1<<" |"<<"V"<<i;fprintf(out2, "%c", 'V');fprintf(out2, "%d", i);for (p = GL[i]; p != NULL; p = p -> next) {cout<<"|-|->|"<<p -> adjvex;fprintf(out2, "%s", "|-|->|");fprintf(out2, "%d", p -> adjvex);}cout<<"|A|"<<e ndl;fprin tf(out2, "%s", "|A|");fprintf(out2, "\r\n");}if (flag)adjlist2.txt"<<endl;cout<<" 有向图的邻接表已保存到fclose(in2);fclose(out2);}}/* End of CreatAdjList() */void CreatAdjMatrix(ADJLIST &GL, int &n, int m)// 建立图的邻接矩阵{int matrix[MAX_SIZE + 1][MAX_SIZE + 1];FILE *in1;FILE *in2;FILE *out1;FILE *out2;int i;int j;int k;int b;char ch;int flag = 0;// 初始化图的邻接矩阵for (i = 1; i <= MAX_SIZE; i++){for (j = 1; j <= MAX_SIZE; j++){matrix[i][j] = 0;}}if (m == 0)// 建立无向图的邻接矩阵{if ((in1 = fopen("graphics1.txt", "rb")) == NULL) {cout<<" 打开 graphics1.txt 失败! "<<endl;exit(1);}if ((out1 = fopen("adjlmatrix1.txt", "wb")) == NULL)cout<<" 打开 adjmatrix1.txt 失败!"<<endl;flag = 1;}// 读入顶点的个数 , ",", 边数 fscanf(in1, "%d", &n); fscanf(in1, "%c", &ch); fscanf(in1, "%d", &b);for (k = 0; k < b; k++){fscanf(in1, "%d", &i);fscanf(in1, "%c", &ch);fscanf(in1, "%d", &j);Check(n, i, j);matrix[i][j] = matrix[j][i] = 1;}for (i = 1; i <= b; i++){for (j = 1; j <= n; j++){cout<<matrix[i][ j]<<' ';fprintf(out1, "%d ", matrix[i][j]);}cout<<endl;fprintf(out1, "\r\n");}cout<<" 无向图的邻接矩阵已保存到 adjmatrix1.txt 中!}"<<endl; else if (m == 1)// 建立有向图的邻接矩阵{if ((in2 = fopen("graphics2.txt", "rb")) == NULL){cout<<" 打开 graphics2.txt 失败! "<<endl;exit(1);}if ((out2 = fopen("adjmatrix2.txt", "wb")) == NULL){cout<<" 打开 adjmatrix2.txt 失败! "<<endl;flag = 1;}// 读入顶点的个数 , ",", 边数fscanf(in2, "%d", &n);fscanf(in1, "%c", &ch);fscanf(in1, "%d", &b);for (k = 1; k <= b; k++){fscanf(in2, "%d", &i);fscanf(in2, "%c", &ch);fscanf(in2, "%d", &j);Check(n, i, j);matrix[i][j] = 1;}for (i = 1; i <= b; i++){for (j = 1; j <= n; j++){cout<<matrix[i][ j]<<' ';fprintf(out2, "%d ", matrix[i][j]);}cout<<endl;fprintf(out2, "\r\n");}cout<<" 有向图已保存到 adjmatrix2.txt 中!"<<endl;}/* End of CreatAdjMatrix() */void DFSAdjList(ADJLIST GL, bool *&visited, int i, intn)// 从初始点出发递归深度优先搜索邻接表 GL 表示的图{if (flag){flag = 0;cout<<"\n================================"<<endl;cout<<"\n 图的深度优先遍历序列: "<<endl;}cout<<i<<' ';visited[i] = true;EdgeNode *p = GL[i];while (p != NULL){int j = p -> adjvex; //j 为 Vi 的一个邻接点的序if (!visited[j])DFSAdjList(GL, visited, j, n);p = p -> next;}/* End of DFSAdjList() */void BFSAdjList(ADJLIST GL, bool *&visited, int i, intn) // 从初始点开始广度优先搜索邻接表 GL 表示的图{int j;const int MaxLength = 100;// 定义一个队列 q, 其元素类型为整型int q[MaxLength] = {0};// 定义队首和对尾指针int front = 0, rear = 0;cout<<"\n==============================="<<endl;cout<<"\n 图的广度优先遍历序列: "<<endl; for (j =1; j <= n; j++)visited[j] = false;cout<<i<<' ';// 访问 Vivisited[i] = true;q[++rear] = i;while (front != rear)// 当队列非空时进行循环处理{// 删除队首元素,第一次执行时 k 的值为 i front = (front + 1) % MaxLength;int k = q[front];// 取邻接表的表头指针EdgeNode *p = GL[k];while (p != NULL)// 依次搜索 Vk 的每个节点{//Vj 为 Vk 的一个邻接节点int j = p -> adjvex;if (!visited[j]){cout<<j<<' ';visited[j] = true;rear = (rear + 1) % MaxLength;q[rear] = j;}p = p -> next;}} cout<<endl;}/* End of BFSAdjList() */void Check(int n, int &i, int &j)// 检查输入的边序号是否越界,如越界择重输入{while (1){if (!(i >= 0 && j <= n && j >= 0 && j <= n)){cout<<"\n 输入有误! "<<endl; exit(1);}break;}}/* End of Check() */main.cpp 源代码如下:#include <iostream>#include "graphics.h"#define MAX_SIZE 100using namespace std;int main(){int i;int n;int m; // 是否为有向图char ch;bool *visited = new bool[MAX_SIZE];ADJLIST gl;// 初始化邻接表InitialAdjList(gl, MAX_SIZE);cout<<"============================="<<endl;cout<<" 请选择图是否有向( 0 无 /1 有): cin>>m;while (1){MainMenue();cout<<" 请输入你的选择: ";cin>>ch;switch (ch){case '1':CreatAdjList(gl, n, m);break;case '2':CreatAdjMatrix(gl, n, m);break;case '3':for (i = 1; i <= n; i++)visited[i] = false;DFSAdjList(gl, visited, 1, n);break;case '4':BFSAdjList(gl, visited, 1, n);break;case '5':exit(1);default:cout<<" 输入有误! "<<endl;break;}}return 0;}。