数据结构
文章平均质量分 57
xpu_zhouxin
做一个合格的程序员
展开
-
数据结构笔记--二叉树的非递归遍历与按层遍历分析
二叉树的先序、中序、后序递归遍历方式,四行代码,熟悉数据结构、熟悉二叉树的都会。但是当我们遇到一颗相对比较大的树,也就是节点比较多的二叉树时,递归遍历就显得不能得心应手了。那么有没有一种不用递归又能遍历二叉树的方法呢? 答案是肯定的。先序、中序、后序遍历我们要借助栈,按层遍历需要一个队列。在C++中,STL已经为我们提供了这两种结构,重复的代码就不在书写,直接使用STL的stack和queue。原创 2016-07-23 19:10:36 · 536 阅读 · 0 评论 -
数据结构笔记--反转链表分析
最近在复习数据结构的时候,看到一道反转链表的题。题目要求将给定链表改变指针指向,从而达到链表逆转的目的。尝试着做了几次,发现改的链表不是健壮性不够,就是在反转的时候会断掉。最终改了好几次,终于大功告成。 参数分析:函数传入一个指向原来链表头的指针,可以修改让其直接修改指针指向,也可以返回指向新链表的头指针,不管怎么都是要求改变原链表的结构。 参数合法性分析:当链表为空的时候,直接让函数终止。当链原创 2016-07-25 13:31:05 · 429 阅读 · 0 评论 -
数据结构笔记--循环队列分析
循环队列是队列的一种顺序表示和实现方法。我们用一个一维数组来存储队列元素值,为了解决“假溢出”现象并使得空间得到充分利用,一个较巧妙的方法是将顺序数组看成一个环状数组(注意:环状空间只是逻辑空间,真实的在内存中的还是连续空间,这就解释了为什么后面的操作要取模)。然而,当我们将数组设计成这样后,队列为满与队列为空就无法正确表示。解决办法有两个:一种是少用一个元素空间。则队满的状况就是(rear+1)%原创 2016-07-23 19:11:54 · 603 阅读 · 0 评论 -
数据结构笔记--通过与BF算法的比较理解KMP算法
近期在复习数据结构,看到串的时候看到这样一道题,求模式串strSub在主串strPrim中第一次出现的位置。第一种常规算法,定义两个指针,一个i指向strPrim第一个字符,另一个j指向strSub第一个字符,两者相等,同时后移,两者不等,让j回到strSub第一个字符位置,i回到上次比较完成的下一个位置,这就是BF算法。另一种是KMP算法,思路网上都有,作者就不复制粘贴了,本文的目的是通过BF算法原创 2016-07-23 19:13:01 · 1013 阅读 · 0 评论 -
数据结构笔记--haffman树与haffman编码分析
haffman树的定义与应用网上都有,作者就不复制粘贴了,本文的主要目的是实现haffman树的创建的代码,并实现给haffman树编码。 定义一颗haffman树节点的结构体如下:typedef struct hafftree{ int m_weight; // 权重 int m_lchild; // 左孩子节点位置 int m_rchild; //原创 2016-07-23 19:14:22 · 796 阅读 · 1 评论 -
数据结构笔记--总结各种查找算法及其应用
基于线性表的查找:具体分为顺序查找法、折半查找法以及分块查找法。三种方式都非常简单,在此引出一个概念,平均查找长度。即为了确定数据元素在列表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度。对于长度为n的列表,查找成功时的平均查找长度为ASL = P1C1 + P2C2 + P3C3 + … + PnCn = ∑PiCi (i=i..n) 其中Pi为查找列表原创 2016-07-30 19:24:06 · 1020 阅读 · 0 评论 -
数据结构笔记--总结各种排序算法及其应用
排序分为直接插入类排序、交换类排序、选择类排序和归并排序。 为了满足每个函数只有一个数组首地址、一个数组长度的要求,我们会对某些函数进行封装。 直接插入类排序:在一个已排好序的记录子集的基础上,每一步将下一个待排序的记录有序的插入到已排好序的记录子集中,直到将所有的待排记录全部插入为止。 直接插入排序:通俗点说,就是把第i个元素插入到前i-1个有序集合并使得插入之后的集合有序。具体做法原创 2016-07-30 19:22:59 · 559 阅读 · 0 评论 -
数据结构笔记--图的邻接表存储及非递归深度优先遍历
最近在复习数据结构,看到图的时候就想尝试一下非递归的深度优先遍历,虽然写出来了,但是程序的可读性不高,所以在网上看了别人的实现,发现很多人只给了邻接矩阵存储的图的非递归遍历,所以作者自己实现了邻接表存储的图的创建和非递归遍历,水平有限,可读性健壮性尽量再努力提高,图的邻接矩阵存储本文不涉及,仅仅介绍邻接表存储。 1、创建图的邻接表: 图的邻接表结构可以存储有向图和无向图而不用改任何东原创 2016-07-25 18:41:16 · 2242 阅读 · 0 评论 -
数据结构笔记--实际软件开发中用到的最多的数据结构和算法
最近在复习数据结构,在网上看到一篇博文:既然在实际应用中用不到数据结构和算法,为什么我们还要学习它?因为哥也只是一个学生,没有接触过实际的项目开发。然后在知乎上看到这个问答: https://www.zhihu.com/question/20066988高票答主说得很好,学习数据结构的目的不是为了不参考任何资料自己实现树,实现图,而是为了在遇到实际的问题时能找到最合适的数据结构和算法。更是为了学习原创 2016-07-30 19:24:38 · 2634 阅读 · 0 评论