
数据结构
chenhao172013
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单向链表
(1)设计链表的数据结构[cpp] view plaincopytypedef struct _LINK_NODE { int data; struct _LINK_NODE* next; }LINK_NODE; (2)创建链表[cpp] view转载 2015-12-17 22:14:10 · 230 阅读 · 0 评论 -
prim算法
/********************1 struct: DIR_LINE MINI_GENERATE_TREE2 insert_line_into_queue(DIR_LINE** ppLine, int start, int end, int weight) delete_line_from_queue(DIR_LINE** ppLi转载 2015-12-29 21:15:56 · 325 阅读 · 0 评论 -
图的保存
前面的几篇博客,我们对图进行基本定义,同时介绍了图的创建、图的添加和删除等。今天,我们聊一聊图是怎么在存储在外设中的。这些外接设备可以是各种类型的,比如说,可以是硬盘、sd卡、网络硬盘等等。本质上说,我们今天讨论的主题就是怎么把图的数据永久地保留在本地。并且,如果需要加载这些数据,也可以快速恢复图原来的面貌。对图数据结构已经记得不太清楚的朋友可以复习一下面的代码,回想一下我们之前的定义方法。转载 2015-12-29 21:03:28 · 261 阅读 · 0 评论 -
图的添加和删除
/************************1 insert_vectex_into_graph(GRAPH* pGraph, int start, int end, int weight) 2 delete_old_vectex(VECTEX** ppVectex, int start) 3 delete_old_line(LINE** pp转载 2015-12-29 20:30:38 · 445 阅读 · 0 评论 -
图的创建
/*******************1 struct: LINE VECTEX GRAPH2 create_new_vectex(int start)3 create_new_line(int end, int weight)4 create_new_graph(int start, int end, int weight)5转载 2015-12-29 20:17:07 · 296 阅读 · 0 评论 -
图的表示
图是数据结构里面的重要一章。通过图,我们可以判断两个点之间是不是具有连通性;通过图,我们还可以计算两个点之间的最小距离是多少;通过图,我们还可以根据不同的要求,寻找不同的合适路径。当然,有的时候为了计算的需要,我们还需要从图中抽象出最小生成树,这样在遍历计算的时候就不需要持续判断是不是遇到了循环节点。当然,这所有的一切都是从图的表示开始的。 1)矩阵表示 矩阵表示可以说转载 2015-12-23 22:38:36 · 231 阅读 · 0 评论 -
二叉树深度遍历
深度遍历是软件开发中经常遇到的遍历方法。常用的遍历方法主要有下面三种:(1)前序遍历;(2)中序遍历;(3)后序遍历。按照递归的方法,这三种遍历的方法其实都不困难,前序遍历就是根-左-右,中序遍历就是左-根-右,后续遍历就是左-右-根。代码实现起来也不复杂。 1)前序遍历[cpp] view plaincopyvoid preo转载 2015-12-23 22:19:26 · 229 阅读 · 0 评论 -
二叉树广度遍历
在二叉树的遍历当中,有一种遍历方法是不常见的,那就是广度遍历。和其他三种遍历方法不同,二叉树的广度遍历需要额外的数据结构来帮助一下?什么数据结构呢?那就是队列。因为队列具有先进先出的特点,这个特点要求我们在遍历新的一层数据之前,必须对上一次的数据全部遍历结束。暂时还没有掌握队列知识的朋友可以看一看我的这一篇博客—队列。 a)下面是新添加的队列数据结构,其中数据部分换成了树节点指针的指转载 2015-12-23 21:46:15 · 301 阅读 · 0 评论 -
线性堆栈
前面我们讲到了队列,今天我们接着讨论另外一种数据结构:堆栈。堆栈几乎是程序设计的命脉,没有堆栈就没有函数调用,当然也就没有软件设计。那么堆栈有什么特殊的属性呢?其实,堆栈的属性主要表现在下面两个方面: (1)堆栈的数据是先入后出 (2)堆栈的长度取决于栈顶的高度 那么,作为连续内存类型的堆栈应该怎么设计呢?大家可以自己先试一下: (1)设计堆转载 2015-12-23 21:31:51 · 544 阅读 · 0 评论 -
线性队列
这里的线性结构实际上指的就是连续内存的意思,只不过使用“线性”这个词显得比较专业而已。前面一篇博客介绍了现象结构的处理方法,那么在这个基础之上我们是不是添加一些属性形成一种新的数据结构类型呢?答案是肯定的,队列便是其中的一种。 队列的性质很简单: (1)队列有头部和尾部 (2)队列从尾部压入数据 (3)队列从头部弹出数据 那么连转载 2015-12-22 22:46:37 · 360 阅读 · 0 评论 -
排序二叉树删除
相比较节点的添加,平衡二叉树的删除要复杂一些。因为在删除的过程中,你要考虑到不同的情况,针对每一种不同的情况,你要有针对性的反应和调整。所以在代码编写的过程中,我们可以一边写代码,一边写测试用例。编写测试用例不光可以验证我们编写的代码是否正确,还能不断提高我们开发代码的自信心。这样,即使我们在开发过程对代码进行修改或者优化也不会担心害怕。然而看起来编写测试用例是一个繁杂的过程,但是从长期的收益来看转载 2015-12-22 14:06:46 · 557 阅读 · 0 评论 -
排序二叉树
前面我们讲过双向链表的数据结构。每一个循环节点有两个指针,一个指向前面一个节点,一个指向后继节点,这样所有的节点像一颗颗珍珠一样被一根线穿在了一起。然而今天我们讨论的数据结构却有一点不同,它有三个节点。它是这样定义的:[cpp] view plaincopytypedef struct _TREE_NODE { int d转载 2015-12-21 23:04:25 · 359 阅读 · 0 评论 -
链表逆序
(1)普通连续内存数据的反转分析[cpp] view plaincopySTATUS normal_revert(int array[], int length) { int* pData ; int index = length - 1; if(NULL == array || 0 == le转载 2015-12-21 22:26:24 · 248 阅读 · 0 评论 -
循环单向链表
1)打印链表数据[cpp] view plaincopyvoid print_data(const LINK_NODE* pLinkNode) { LINK_NODE* pIndex = NULL; if(NULL == pLinkNode) return; pri转载 2015-12-21 21:15:23 · 295 阅读 · 0 评论 -
双向链表
(1)定义双向链表的基本结构[cpp] view plaincopytypedef struct _DOUBLE_LINK_NODE { int data; struct _DOUBLE_LINK_NODE* prev; struct _DOUBLE_LINK_NODE* next; }D转载 2015-12-17 23:08:31 · 305 阅读 · 0 评论 -
克鲁斯卡尔算法
/******************** kruskal(GRAPH* pGraph) _kruskal(MINI_GENERATE_TREE* pTree[], int length, DIR_LINE* pLine[], int number) bubble_sort(void* array[], int lengt转载 2015-12-29 23:30:54 · 825 阅读 · 0 评论