数据结构——图的遍历

前面有一题是多态和另外一个名词的解释,有点记不清了。
然后还有一道题考的是括号
【菜科解读】
接下来今天讲数据结构——图的遍历~
上个学期在上海泰瑞达的春季招聘中曾被考过这类问题。
前面有一题是多态和另外一个名词的解释,有点记不清了。
然后还有一道题考的是括号解析,这个很简单的,用栈就能直接处理。
然后后面就是连续的两个图的问题。
之前好像只是简单的看了看源代码,对于什么是深度优先遍历和广度优先遍历稍微有点认识吧。
结果自然是可想而知,比较惨的。
当时我在卷子上是这么写的:“今天不会,明天就会了”。
当天回去就开始看图论,但是确实是搞的差不多了,不过现在嘛,呵呵~
首先,图的存储结构有简单的两种:1 邻接矩阵法 2临界表法
邻接矩阵我觉得是非常明了的一种图的表示方法,当然了,其缺点就是,在图的点数多而连接线少的时候,比较浪费资源。
我的邻接矩阵简单代码如下:
1 int main() 3 cout > nLineNumbers;23 // while(nLineNumbers --)24 // {25 // cout > nItem >> Point;27 // tmpGphLst.AddToListByOrder(nItem, Point);28 // }29 // tmpGphLst.BFS();30 // cout 这样从1点开始进行深度优先遍历,我们很容易就能得出其遍历结果:1 2 3 5 4
这个结果相信不用我多说吧,具体可以看代码及其运行结果:
1 int Graph::DeepSearch(int Point) 2 { 3 p_nVisitList[Point] = 1; 4 cout 而邻接矩阵的广度优先遍历则是逐层访问,比较适合邻接表来做。邻接矩阵的广度优先遍历方法如下:
1 void Graph::BFS() 3 p_nVisitList[4] = 1; 4 cout DL; 6 DL.push(4); 7 while(!DL.empty()) 9 int val = DL.front();10 DL.pop();11 for(int i = 0;i 看下这个类的代码: 1 class ListNode 3 public: 4 int val; 5 int weight; 6 ListNode * next; 7 public: 8 ListNode(); 9 };10 ListNode::ListNode():val(0), weight(0), next(NULL)14 class GraphList16 public:17 GraphList();18 ~GraphList();19 void AddToListByOrder(int nitem, int Point);20 void BFS(int n = 0);//这个广度优先遍历的代码太好写了21 private:22 int visit[5];23 ListNode * Next[5];24 };上面的代码中包含了两个类,一个是邻接表的节点类,另外一个是邻接表本身。
代码还是很简单的,而且因为邻接表的特性,使得分层遍历十分方便,看主函数代码结构:
1 GraphList tmpGphLst; 2 int nLineNumbers = 0; 3 int nItem, Point; 4 cout > nLineNumbers; 6 while(nLineNumbers --) 8 cout > nItem >> Point;10 tmpGphLst.AddToListByOrder(nItem, Point);12 tmpGphLst.BFS();13 cout 2 #include 4 using namespace std; 6 class Graph 8 private: 9 //访问控制 10 int p_nVisitList[5]; 11 int (* pBlock)[5]; 13 public: 14 Graph(int (*pParam)[5]); 15 ~Graph(); 16 //深度优先遍历 17 int DeepSearch(int Point = 0); 18 void BFS(); 19 void ResetVisit(); 20 }; 22 class ListNode 23 { 24 public: 25 int val; 26 int weight; 27 ListNode * next; 28 public: 29 ListNode(); 30 }; 31 ListNode::ListNode():val(0), weight(0), next(NULL) 32 { 33 ; 34 } 35 class GraphList 36 { 37 public: 38 GraphList(); 39 ~GraphList(); 40 void AddToListByOrder(int nitem, int Point); 41 void BFS(int n = 0);//这个广度优先遍历的代码太好写了 42 private: 43 int visit[5]; 44 ListNode * Next[5]; 45 }; 46 void GraphList::AddToListByOrder(int nitem, int Point)//前插法,代码好写 47 { 48 if(nitem >= 0 && nitem = 0 && Point val = Point; 54 pnewnode->next = Next[nitem]; 55 Next[nitem] = pnewnode; 56 } 57 } 59 void GraphList::BFS(int n) 60 { 61 for(int i = 0;i val]) 72 { 73 cout val val] = 1; 75 } 76 pLNTmp = pLNTmp -> next; 77 } 78 } 79 } 81 GraphList::GraphList() 82 { 83 for(int i = 0;i next; 98 delete Next[i]; 99 Next[i] = ptmpLN;100 }101 }102 }104 void Graph::ResetVisit()105 {106 for(int i = 0;i DL;143 DL.push(4);144 while(!DL.empty())145 {146 int val = DL.front();147 DL.pop();148 for(int i = 0;i > nLineNumbers;182 while(nLineNumbers --)183 {184 cout > nItem >> Point;186 tmpGphLst.AddToListByOrder(nItem, Point);187 }188 tmpGphLst.BFS();189 cout 数据结构,—,图,的,遍历,接下来,今天,讲,中古世纪基督教在历史上的转折——米兰敕令
而这三大宗教的信徒可以说是占了全球绝大部分的人口,曾经对世界的各个地方都产生了非常深远的影响。
不管是在政治,经济,军事,文化等各个方面都是有着非常重要的影响力的。
虽然说起来现在的人们对于宗教的信仰没有以前那么虔诚,但是不可否认宗教的影响力还是存在的。
尤其是三大宗教里面的基督教,无论从规模还是影响力都可以说是世界第一大宗教。
基督教是目前世界上最大,传播范围最为广泛的宗教了,他是由犹太教慢慢的蜕变过来的,基督教的创始人是耶稣,他是公元一世纪的犹太人,继承了犹太教的《圣经》和许多的文化传统,信仰上帝创造并且主宰世界。
曾经收过十二个门徒,但是后来由于犹太教上层的嫉妒与迫害,最后被处以反叛罗马的罪行钉死在十字架上。
在中世界欧洲的罗马帝国时期,当时的基督教还算是属于非法宗教,各方势力都在全面压制着基督教的发展。
当时的罗马帝国信奉的还是传统的氏族,家庭的神祇,反对异教,特别是当时的基督教。
因为基督教的信徒在否定当时罗马神,危害罗马统治者的神权,所以也就导致了罗马帝国对于它的镇压。
但是由于基督教强大的吸引力使得它在当时的罗马帝国逐渐盛行起来,面对着基督教势力的日渐增长,罗马的统治者慢慢发现基督教这样一个新生的力量有着能够克服帝国思想危机的作用,于是便开始对它采取了怀柔的政策。
而在到了君士坦丁的时候,为了寻求日渐强大起来的基督教的支持以及想要达到对整个帝国的统治,所以,君士坦丁就改变政策,联合当时的另外一位奥古斯都,在米兰达成共识,并且一起签署了著名的米兰敕令,承认了基督教的合法地位,并且发还过去没收的教会财产,这也是罗马法律上第一次公开承认基督教会可以拥有财产权,这一敕令的签署称为了基督教历史上非常重大的转折点,是基督教史上的里程碑,也是罗马帝国对基督教从一开始的镇压打击政策转移成为扶植,利用的标志。
虽然君士坦丁放开对于基督教的限制并不是为了使它成为国教,但是他所制定的法律和其他的政策都有力的促进了基督教的发展,在君士坦丁时期,他颁布的法令都会给于基督教众多的特权,甚至信奉基督教还成为了快速晋升国家高级职位的捷径,他还建造了众多知名的教堂。
在经过君士坦丁之后,基督教的地位在罗马帝国已经不可动摇,也开始了在西方文化历史上独霸其尊的时候。
公元380年更是被当时的罗马帝国定位国教,并禁止其他宗教进行传教。
这段时间也成为了基督教成长的黄金时期。
在之后的一千年里,基督教开始四处传播,为其成为世界第一大宗教奠定了坚实的基础。
随机文章请问清朝时期成吉思汗后裔有被封爵吗?算命/占卜专用的巴纳姆效应,模棱两可的话语忽悠你找不到北什么是fab法则介绍法,属性作用和益处缺一不可(占比因人而异)揭秘史前利莫里亚文明之谜,不重物质修炼精神成神(乌托邦文明)宇宙中黑洞是怎么被发现的,黑洞最早是谁提出的(爱因斯坦)
如何台式电脑如何重装系统?超详细步骤图解轻松搞定
软件支持 在线重装、U盘制作、自定义重装 等多种模式。
简介:在我们的日常生活中,计算机早已成为不可或缺的重要工具。
然而,随着时间的推移,电脑难免会遇到各种系统问题,例如性能下降、文件损坏或顽固病毒等。
此时,重装系统成为解决这些困境的重要手段。
本文将为您详细讲解台式电脑的重装系统步骤,确保您能轻松搞定。
工具原料:系统版本:Windows 10品牌型号:联想ThinkCentre软件版本:小白一键重装系统 V11.5.47.1860一、前期准备1、备份重要数据:重装系统会清除硬盘上的所有数据,所以在开始之前,请确保备份所有重要文件到外部硬盘或云端。
2、确定版本:明确您需要安装的Windows版本,确保与您电脑的硬件相兼容。
3、获取安装介质:下载相应的系统ISO文件,准备一个大于8GB的U盘,并使用软件(如Rufus)将ISO文件制作成启动U盘。
二、进入安装界面1、设置BIOS优先启动:重启电脑并迅速按下F2/Delete键进入BIOS设置界面,导航到启动顺序设置,确保U盘在第一位。
2、保存并退出:保存BIOS设置,重启计算机,电脑将从U盘启动并进入安装界面。
三、安装Windows系统1、选择语言和输入法:在安装界面选择合适的语言、时间格式和键盘输入法,然后点击“下一步”。
2、安装类型选择:选择“自定义:仅安装Windows (高级)”,以清理所有现有系统文件,提供干净的安装环境。
3、划分分区:删除原有分区并重新创建分区。
在此步骤中,请务必小心,避免误删其它硬盘内容。
4、开始安装:选择分区后,点击“下一步”开始安装。
安装过程将自动完成,电脑会多次重启。
四、配置系统设置1、账户设置:安装完成后,您需要设置新的用户账户、密码以及安全问题,这些信息将用于日后的电脑管理与安全。
2、联网与更新:连接网络后,确保系统更新到最新版本,安装必要的驱动程序,以保持系统的最佳性能。
软件推荐如果步骤太过繁琐,也可以考虑使用小白一键重装系统软件,它提供直观易懂的操作界面,助您快速完成系统重装。
拓展知识:1、使用云备份:为了避免因系统重装导致的数据丢失,建议使用云备份服务(如OneDrive、Google Drive)进行持续数据存储。
2、创建系统恢复点:在系统运行良好时,创建一个系统恢复点,以便在系统出现问题时快速恢复到最佳状态。
3、学习基础维护:除了重装系统,还可以学习优化系统性能的方法,例如定期清理不必要的启动项、保持杀毒软件更新等。
总结:重装系统虽然听起来复杂,但了解并按照详细步骤操作后,将不再是棘手的任务。
无论是通过传统手动步骤,还是借助于一键重装软件,台式电脑的系统重装过程均可快速完成。
希望本文能够为您提供清晰的指导,助您轻松应对系统重装的挑战。
标签: 注意:本站所刊载的文章均为学习交流之用,请勿用于商业用途。
对于商业使用,请联系各自版权所有者,否则法律问题自行承担。
Windows7旗舰版密钥激活指南:全面解析与常见问题解决方案 系统之家win7重装全攻略:解决所有安装难题 如何台式电脑怎么重装系统?超详细步骤图解轻松搞定 分类于: 回答于:2024-12-18 简介:在我们的日常生活中,计算机早已成为不可或缺的重要工具。
然而,随着时间的推移,电脑难免会遇到各种系统问题,例如性能下降、文件损坏或顽固病毒等。
此时,重装系统成为解决这些困境的重要手段。
本文将为您详细讲解台式电脑的重装系统步骤,确保您能轻松搞定。
工具原料:系统版本:Windows 10品牌型号:联想ThinkCentre软件版本:小白一键重装系统 V11.5.47.1860一、前期准备1、备份重要数据:重装系统会清除硬盘上的所有数据,所以在开始之前,请确保备份所有重要文件到外部硬盘或云端。
2、确定版本:明确您需要安装的Windows版本,确保与您电脑的硬件相兼容。
3、获取安装介质:下载相应的系统ISO文件,准备一个大于8GB的U盘,并使用软件(如Rufus)将ISO文件制作成启动U盘。
二、进入安装界面1、设置BIOS优先启动:重启电脑并迅速按下F2/Delete键进入BIOS设置界面,导航到启动顺序设置,确保U盘在第一位。
2、保存并退出:保存BIOS设置,重启计算机,电脑将从U盘启动并进入安装界面。
三、安装Windows系统1、选择语言和输入法:在安装界面选择合适的语言、时间格式和键盘输入法,然后点击“下一步”。
2、安装类型选择:选择“自定义:仅安装Windows (高级)”,以清理所有现有系统文件,提供干净的安装环境。
3、划分分区:删除原有分区并重新创建分区。
在此步骤中,请务必小心,避免误删其它硬盘内容。
4、开始安装:选择分区后,点击“下一步”开始安装。
安装过程将自动完成,电脑会多次重启。
四、配置系统设置1、账户设置:安装完成后,您需要设置新的用户账户、密码以及安全问题,这些信息将用于日后的电脑管理与安全。
2、联网与更新:连接网络后,确保系统更新到最新版本,安装必要的驱动程序,以保持系统的最佳性能。
软件推荐如果步骤太过繁琐,也可以考虑使用小白一键重装系统软件,它提供直观易懂的操作界面,助您快速完成系统重装。
拓展知识:1、使用云备份:为了避免因系统重装导致的数据丢失,建议使用云备份服务(如OneDrive、Google Drive)进行持续数据存储。
2、创建系统恢复点:在系统运行良好时,创建一个系统恢复点,以便在系统出现问题时快速恢复到最佳状态。
3、学习基础维护:除了重装系统,还可以学习优化系统性能的方法,例如定期清理不必要的启动项、保持杀毒软件更新等。
总结:重装系统虽然听起来复杂,但了解并按照详细步骤操作后,将不再是棘手的任务。
无论是通过传统手动步骤,还是借助于一键重装软件,台式电脑的系统重装过程均可快速完成。
希望本文能够为您提供清晰的指导,助您轻松应对系统重装的挑战。
菜科网系统致力于解决 Windows 系统重装解决方案,提供高效、安全、免费的系统重装服务。