数据结构
文章平均质量分 82
thepeakofmountain
这个作者很懒,什么都没留下…
展开
-
链表算法二之单链表逆置
单链表逆置的意思就是把原来的suoyo原创 2014-04-26 22:04:57 · 1150 阅读 · 0 评论 -
排序算法一之冒泡 选择 插入 希尔排序
冒泡排序:就是交换相邻的两个数,每次m原创 2014-04-10 22:09:40 · 830 阅读 · 0 评论 -
查找算法一之顺序查找 二分查找
上一节介绍了常见的排序算法,今天这一节jie原创 2014-04-21 16:09:09 · 904 阅读 · 0 评论 -
查找算法二之哈希查找
以前对于哈希的用法就是数据结构的时候,原创 2014-04-24 19:16:47 · 772 阅读 · 0 评论 -
链表算法一之单链表基本操作
这一节介绍另外一种数据结构原创 2014-04-25 15:19:38 · 1172 阅读 · 0 评论 -
查找算法三之二叉排序树
在学习查找算法的时候说过,当时you对树的操作不熟练,所以关于二叉搜索树、B树这些动态查找都没有练习,这一节补上,这一节介绍二叉搜索树。 二叉搜索树,书上叫二叉排序树或者二叉查找树,首先看定义,二叉排序树或者是一颗空树,或者是具有下列性质的二叉树:(1)若他的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若他的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)它原创 2014-05-10 17:44:54 · 1323 阅读 · 0 评论 -
二叉排序树删除值小于value的结点
还是s前面那个题,同学去阿里面试的时候,要求写出代码: 现在有一棵二叉排序树,每个节点保存一个int类型的值,删除值为10以下的节点(树中可能不含值为10的节点),说一下思路,写一下算法。 算了原来错误的思路就不拿出来误导大家了,只能说想简单了,花了几天空闲的时间思考这个问题的功夫,终于把代码写出来了,虽然琢磨了一段时间,但是终究还是写出来了。 经过测试数据或者自己画图,感原创 2014-05-12 21:21:31 · 3438 阅读 · 7 评论 -
图算法一之图的创建和转换
犹豫了很久,是否写这一章,yi原创 2014-06-16 16:15:59 · 959 阅读 · 0 评论 -
图算法三之BFS
如果说图的深度优先遍历类似树的前序遍历, 那么图的广度优先遍历就类似于树的层序遍历了,其实我就是按照树的层次遍历来理解图的BFS,因为这样容易记忆还方便理解BFS也贴个图吧代码也不长,感觉和DFS一样,都是侧重于理解,理解了代码就能写出来了先是邻接矩阵的BFSvoid MGraphBFS(int i,struct MGraph *graph){ queue queue;原创 2014-06-19 11:11:16 · 746 阅读 · 0 评论 -
图算法二之DFS
图的DFS就是从图中某个顶点v出发,访问此顶点,然后从v的未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径想通的顶点都被访问到。还是给个例子把,图形直观其实图的DFS代码还是非常短的,关键是理解怎么遍历的,和BFS区别开,对于邻接矩阵,代码如下void MGraphDFS(int i,struct MGraph *graph){ printf("当前顶点:%d\原创 2014-06-19 07:29:55 · 1039 阅读 · 0 评论 -
二叉树算法一之创建和遍历
按照数据结构的课本,栈和队列的下一章知识应该是讲解串,但是c中对于字符串都是字符数组的概念,且基本的方法都已经封装了,对于c++来说,直接有string这种数据类型,唯一能讲的应该是KMP算法, 但是没有学习过,数组和广义表也用的很少,都跳过,有需要的时候再看,所以这章将重点介绍二叉树,二叉树讲覆盖二叉树的创建和遍历、线索二叉树、哈夫曼树等 树这一节概念比较多,如果光介绍概念和各种不同和一原创 2014-05-05 20:18:47 · 861 阅读 · 0 评论 -
二叉树算法二之中序线索
在介绍线索二叉树之前,我们需要知道对于一个有n个结点的二叉树,每个结点有指向左右孩子的两个指针域,所有一共有2n个指针域。而n个结点一共有n-1个分支线数,则存在2n-(n-1)=n+1个空指针域,而这里介绍的都是指中序线索二叉树。 对于任意的遍历二叉树,为了解决清楚地知道任意一个结点的前驱和后继的问题,引入了线索二叉树,把指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相原创 2014-05-07 10:01:16 · 826 阅读 · 0 评论 -
二叉树算法三之哈弗曼树和编码
这一节介绍哈夫曼树和哈弗曼编码,其中构造哈弗曼树的步骤如下1.根据给定的n个权值{ Wl,响,…,Wn }构成n棵二叉树的集合F={Tl,T2,…Tn},其中每棵二叉树Ti 中只有一个带权为Wi 根结点,其左右子树均为空。2. 在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左右子树上根结点的权值之和。3. 在F中删除这两棵树,同时将新转载 2014-05-09 16:05:19 · 964 阅读 · 0 评论 -
二级指针的疑惑
在线索二叉树和用后继指针遍历双向链表时,都是用二级指针解决了问题,但是为什么用一级指针就会返回NULL呢,咋们先看下面这道题void test(int *p){ cout<<p<<" "<<endl; int a=1; p=&a; cout<<p<<" "<<*p<<" "<<endl;}int main(){ int *p=NULL; cout<<p<<endl; t原创 2014-05-08 16:05:52 · 679 阅读 · 0 评论 -
链表算法三之静态链表
本节知识来源于大话数据结构,代码基本上yehi原创 2014-04-28 21:04:22 · 638 阅读 · 0 评论 -
单链表的一些练习题
本来准备自己写一个单链表的排序,但是没写出来,原因是buzhidao转载 2014-04-28 20:28:18 · 1462 阅读 · 0 评论 -
排序算法四总结
对照原创 2014-04-20 09:16:55 · 693 阅读 · 0 评论 -
链表算法五之双向链表
前面都是介绍单链表,本节介绍双向链表的一些原创 2014-04-30 10:55:39 · 794 阅读 · 0 评论 -
链表算法六之多项式相加
按照数据结构的课本,本节知识将介绍多项式的一些曹原创 2014-05-01 12:01:26 · 1040 阅读 · 0 评论 -
栈和队列算法一之栈的基本操作
栈是限定仅在表尾进行charuhuo原创 2014-05-02 11:25:26 · 1418 阅读 · 0 评论 -
栈和队列算法二之栈的应用
栈的应用者一节知识,按照数据结构的课本,一共有5个题: 1.数制转换 2.括号匹配的检验 3.行编辑程序 4.迷宫求解 5.表达式求值 其中括号的匹配和表达式求值中对于没有括号的四则元素,分别参考九度题目1153:括号匹配问题和九度题目1019:简单计算器其中括号匹配问题不再重复,关于表达式求值,还是再写一个加上括号的四则运算数制转换:对于输入的任意一个非负十进制原创 2014-05-03 21:24:32 · 701 阅读 · 0 评论 -
排序算法二之快速 归并排序
#include #include #define MAXN 10int p(int a[],int left,int right){ int tmp=a[left]; while(left<right){ while(a[right]>tmp) right--; a[left]=a[right]; while(a[left]<tmp) left++; a[right原创 2014-04-17 14:35:49 · 618 阅读 · 0 评论 -
栈和队列算法三之队列的基本操作
本节知识介绍与栈相反的一种相反的数据结构,队列,队列是一种先进先出(FIFO)的线性表。允许插入的一端称为队尾,允许删除的一端称为对头,队列只允许在对头删除元素和在队尾插入元素,栈和队列都是操作受限的线性表。 上一节用原创 2014-05-04 10:46:00 · 827 阅读 · 0 评论 -
栈和队列算法四之循环队列
为了解决假溢出的办法就是当队尾"满"了,就再从头开始,也就是头尾相接的循环。我们把队列的这种头尾相接的顺序存储结构称为循环队列。链式存储是不会出现这个问题的。 当队列为空时,此时front==rear,但是现在队列满的条件也是front==rear,怎么判断队列究竟是空还是满呢? 1.解决办法一是设置一个标志变量flag,当front==rear,且flag=0时为空队列,当fr原创 2014-05-05 09:09:04 · 1399 阅读 · 0 评论 -
排序算法三之堆排序
这次介绍堆排序,堆排序氛围原创 2014-04-19 18:18:02 · 669 阅读 · 0 评论 -
链表算法四之循环链表
前面介绍了单链表的一些练习题,原创 2014-04-29 11:37:54 · 601 阅读 · 0 评论