数据结构
kindlyde
学习,学而习之。
展开
-
栈
栈的定义:一种特殊的表,限制插入和删除只能在一个位置上进行的表。栈的性质:LIFO,last in first out栈常用的操作:创建栈(creat)销毁栈(distory)清空栈(clear)进栈(push)出栈(pop)获取栈顶元素(Top)获取栈的大小(get_length)栈的实现: •数组实现 •单链表原创 2015-04-25 15:43:15 · 557 阅读 · 0 评论 -
入门机排序算法
根据算法的复杂度,比较简单的排序算法有:选择排序、直接插入排序和冒泡排序。所以本节内容先着重介绍这三种排序算法,为以后更有难度的算法打打基础。一、选择排序基本思想:每一趟(例如第 i 趟,i = 0, 1, ..., n-2)在后面 n- i 个待排序的数据元素中选出关键字最小的元素,作为有序元素序列的第 i 个元素,即与第 i 个元素进行交换。实现代码原创 2015-06-15 11:38:18 · 441 阅读 · 0 评论 -
图的遍历
图的遍历:定义:从图中的某一顶点出发,沿着边访问访问图中其余顶点,且使每个顶点仅被访问一次。通常有两种遍历次序方案:•深度优先遍历(dfs)---类似于前序遍历•广度优先遍历(bfs)---类似于层序遍历•深度优先遍历(dfs)算法思想描述:访问起始顶点v 当 v 还有邻接顶点未被访问时:(起始条件) •深度遍历未访问的邻接顶点原创 2015-04-25 17:25:57 · 804 阅读 · 0 评论 -
线索化二叉树
线索化二叉树指的是二叉树中的结点进行逻辑意义上的“重排列”,使其可以线性的方式访问每个结点前序遍历线索化:方法:利用结点中的空的左指针域,使其指向后继结点。前序遍历下图二叉树,遍历结果是:1 2 4 8 9 5 10 3 6 7,红线部分即指明该结点在前序遍历时的后继元素。算法思想:初始化位置指针 • p = NULL;前序遍历二叉树原创 2015-04-25 16:45:33 · 838 阅读 · 0 评论 -
遍历二叉树
二叉树的遍历是指从根结点开始,按照某种次序依次访问二叉树中的所有结点,每个结点只能被访问一次。遍历的意义在于把树中的结点变成某种有意义的线性序列。前序遍历:算法思想:二叉树为空,则操作返回不为空,则 • 访问结点数据,并打印出来 • 先序遍历左子树 • 后序遍历右子树实现代码:void pre_order_原创 2015-04-25 16:31:39 · 707 阅读 · 0 评论 -
创建二叉树
如何在二叉树中定位结点的位置?指路法定位结点:根据生活中的经历:左拐、右拐、左拐、、、大致思路:通过根结点与目标结点的相对位置进行定位,这种方法可以避开二叉树递归的性质“线性定位”C描述:利用bit位进行指路#define BT_LEFT 0#define BT_RIGHT 1typedef unsigned long BT_pos;原创 2015-04-25 16:29:54 · 819 阅读 · 0 评论 -
二叉树及其性质
孩子兄弟表示法模型:可比较(双亲孩子表示法模型结构)数据域data孩子结点指针 firstchild兄弟结点指针 rightsibfirstchild :指向该结点的第一个孩子rightsib :指向该结点的右兄弟特点:•能够表示任意的树形结构•每个结点中有且仅有三个指针域(如上)•每个结点的结构简单,只有原创 2015-04-25 16:12:31 · 868 阅读 · 0 评论 -
树
在线性内存中如何实现对非线性事物的存储。树的定义:树:一种非线性的数据结构树是n(n >= 0)个结点的有限级 . n=0时称为空树,在任意一棵非空树中: a)有且只有一个特定的称为根的结点,它只有直接后继,但没有直接前驱 b)当n>1,其余结点可分为m (m >0)个互不相交的有限集 T1、T2...,其中每一个集合本身又是一棵树,并且称为根的子树原创 2015-04-25 16:00:47 · 578 阅读 · 0 评论 -
图的定义和存储结构
学习目的及应用:导航 、GPS、网络规划、路径规划交通流可以用一个图来模型化,每一条街道交叉口表示一个顶点,而每一条街道就是一条边。边的值可能是代表限制速度,或者是容量(车道的数目)等等。此时我们可能需要找出一条最短路,或用该信息找出最可能产生交通瓶颈的位置,图的定义:是由顶点的有穷非空集合和顶点之间边的集合组成一种数据结构表示方法: graph = ( V,E )原创 2015-04-25 17:07:56 · 1278 阅读 · 0 评论 -
进阶排序算法
一、希尔排序:(可以看做插入排序的升级,属于插入排序类)基本思想:将待排序列划分为若干组,在每一组内进行插入排序,以使整个序列基本有序,然后再对整个序列进行插入排序。基本有序的概念:就是小的关键字基本在前面,大的基本在后面,不大不小的基本在中间。基本有序举例:{ 2,1,3, 6,4,7, 5,8,9 }划分为若干组的目的:减少待排序记录的个数,并使整个原创 2015-06-15 11:42:12 · 1298 阅读 · 0 评论