数据结构——图的遍历

前面有一题是多态和另外一个名词的解释,有点记不清了。
然后还有一道题考的是括号
【菜科解读】
接下来今天讲数据结构——图的遍历~
上个学期在上海泰瑞达的春季招聘中曾被考过这类问题。
前面有一题是多态和另外一个名词的解释,有点记不清了。
然后还有一道题考的是括号解析,这个很简单的,用栈就能直接处理。
然后后面就是连续的两个图的问题。
之前好像只是简单的看了看源代码,对于什么是深度优先遍历和广度优先遍历稍微有点认识吧。
结果自然是可想而知,比较惨的。
当时我在卷子上是这么写的:“今天不会,明天就会了”。
当天回去就开始看图论,但是确实是搞的差不多了,不过现在嘛,呵呵~
首先,图的存储结构有简单的两种: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 数据结构,—,图,的,遍历,接下来,今天,讲,康熙为什么要假装杀李绂 他的真正的意图是什么样的
首先小编要和大家来说一下李绂这个人物,李绂小时候的家境是比较贫穷的,他也是靠着自己的天赋和努力在考试中得到了第一名,所以在康熙年间,也是慢慢的提拔职位,在朝廷之上占据了一定的地位,之后也是因为李绂这个人为人很正直,是那么多大臣中的一股清流,如何清流,比如说李绂担任了会试的考官,因为在考试中有人作弊,被李绂发现也是直接当场就废除了考试资格,也是因为这件事情李绂遭到了那些人的报应,之后也是被贬去做了河工。
但是在当时雍正的眼中觉得很是信任佩服这个李绂,所以在雍正继位的时候也是恢复了李绂的官位,这样一个知识分子雍正是断断不能够失去的,之后一定会大有用处,但是当时大家也是知道在雍正继位之前也是各有党派,其中李绂之前就是老三那边的人,所以也是为之后雍正假装杀李绂埋下了伏笔,因为那时候雍正很记恨老三和老八的同党,虽然在雍正继位之后,老三他们是第一个表明自己的态度,要臣服于雍正身下,但是雍正对于老三还是很不信任。
而且那时候李绂也是有一些结党的嫌疑,在当时李绂的一些朋友受到了老三的一些惩罚,所以李绂也是来找到老三希望可以从轻处置,宽容一些,所以就这样在雍正的心中,李绂算是老三的朋党了,所以之后也是下旨要杀掉李绂,但是在雍正的心中其实是还有另一个算盘,所以老三这样一想雍正这样做的原因是在打压他,所以老三也是前去求雍正,雍正的真正意图其实就是让老三过来跪地求他,之后也是剥夺了权力,所以之后雍正也是掏出了赦免李绂的旨意。
所以看到这里也是觉得作为一个皇帝也是要有一些心机的,不然怎么安安稳稳的去做一个皇帝,所以之后雍正的地位可以说是更加的稳固了,并且老三也是不在管朝廷上面的事情了,只能说活下皇宫里面,每走一步都是算计吧,只能够小心为妙。
随机文章辅佐汉武帝成就功业的最大功臣是谁?西游记菩提老祖的真实身份,竟是圣人通天教主/孙悟空的强大后台路飞的第十个伙伴是谁,海侠甚平成为草帽海贼团的舵手(严防海底)银河系中心为什么那么亮,密集老年红色恒星所致/年龄100亿年以上中国火星探测计划,中国为什么不探索火星(2020年发射探测卫星)
活的基围虾处理干净图解?传统基围虾去虾线方法窍门
虾的肉质肥嫩鲜美,食之既无鱼腥味,又没有骨刺,老幼皆宜,备受青睐;虾的吃法多样,可制成多种美味佳肴,虾肉历来被认为既是美味,又是滋补壮阳之妙品。
基围虾是清水虾处理起来比较容易,特别是活的基围虾最容易去除虾线了,买回来活的基围虾处理处理干净必需要把沙包和虾线一起处理掉才最为干净,下面,把活活的基围虾处理方法以图文讲解的方式分享给大家,处理一只虾只需要2秒足够了,而且处理的非常干净。
本文目录1、2、3、4、1活的基围虾怎么处理干净1、两手抓住虾头跟虾的尾部4、然后拿住沙包,轻轻一拉,整条虾线也就一起出来了,这就是活的基围虾最快的处理方法,也是最干净的了。
2、用牙签从基围虾背部第三节处戳过去。
最后把所有处理完的基围虾在清水中洗一下就可以下锅。
3基围虾的选购技巧1、活虾:选虾的时候最好选沉在池底的,浮上水面来的虾大多是因为缺氧。
不过选浮在水底的虾也要注意,有的死虾也会沉在水底,要仔细看它是否生鲜。
身体呈透明感、虾壳光亮的虾子最为新鲜。
若发现虾子身体部分呈现白色,活动力下降,就证明这个虾的生命快结束了。
1. 虾营养丰富,且其肉质松软,易消化,对身体虚弱以及病后需要调养的人是极好的食物;2. 虾中含有丰富的镁,镁对心脏活动具有重要的调节作用,能很好的保护心血管系统,它可减少血液中胆固醇含量,防止动脉硬化,同时还能扩张冠状动脉,有利于预防高血压及心肌梗死;3. 虾的通乳作用较强,并且富含磷、钙、对小儿、孕妇尤有补益功效;4. 日本大阪大学的科学家最近发现,虾体内的虾青素有助于消除因时差反应而产生的“时差症”。