程序最美(寻路)

你还在坚持练习你的技术吗?运动员天天训练,音乐家也会演练更难的曲章。你呢?

2013年12月22日

图的建立、广度优先遍历和深度优先遍历

摘要: 图的建立、广度优先遍历和深度优先遍历 图分为有向图和无向图,再根据是否有权重又可以分为有权重图和无权重图。图常用的表示方式有邻接矩阵和邻接表。这里我们处理的图是有向、无权重图,采用的表示方式是邻接表。 图的数据保存在文件中,比如: a 1 b b 2 c e c 1 f d 2 c f e 1 a f 0 其中,第一个元素表示图中节点的名字,第二元素表示其可以直接到达的节点个数,后面紧跟着直接可以达到的节点。 我们采用的表示方式是邻接表,邻接表首先针对图中的节点定义一个数组,用来记录每个节点,数组中的每个节点元素后面跟着一个链表,在该链表中记录着其可以直接到达的节点。 节点的定义有以下几个部分 阅读全文

posted @ 2013-12-22 17:11 unixfy 阅读(10689) 评论(0) 推荐(0) 编辑

多叉树的设计、建立、层次优先遍历和深度优先遍历

摘要: 多叉树的设计、建立、层次优先遍历和深度优先遍历 早起曾实现过一个简单的多叉树《实现一个多叉树》。其实现原理是多叉树中的节点有两个域,分别表示节点名以及一个数组,该数组存储其子节点的地址。实现了一个多叉树建立函数,用于输入格式为A B。A表示节点的名字,B表示节点的子节点个数。建立函数根据用户的输入,首先建立一个新的节点,然后根据B的值进行深度递归调用。用户输入节点的顺序就是按照深度递归的顺序。另外,我们实现了一个层次优先遍历函数。该函数用一个队列实现该多叉树的层次优先遍历。首先将根节点入队列,然后检测队列是否为空,如果不为空,将队列出队列,访问出队列的节点,然后将该节点的子节点指针入队列,依次 阅读全文

posted @ 2013-12-22 17:06 unixfy 阅读(42168) 评论(3) 推荐(5) 编辑

几个简单的排序算法及其优化

摘要: 几个简单的排序算法及其优化 排序算法是数据结构、算法中的基本组成部分,TAOCP中专门有一卷是讲排序算法的。网上有个排序算法的介绍和博客很多,可以自行谷歌百度之。相关基本介绍可以查看Wiki。 这里我们简单介绍几个简单的排序算法:冒泡排序、选择排序、插入排序、快速排序。其中,我们分别对冒泡排序、选择排序、插入排序做了小小的优化,快速排序算法我们采用的分割策略是《快速排序的三种分割策略》中介绍的第三种分割策略。 冒泡排序的原理是始终比较两个相邻的元素,如果符合条件就交换。其改进方法是,添加一个标示符,初始的时候用来表示待排序序列时已经有序的,如果存在交换操作,则说明原来序列不是有序的,修改该标示 阅读全文

posted @ 2013-12-22 16:59 unixfy 阅读(1360) 评论(0) 推荐(0) 编辑

导航