
Data structure
nvd11
大龄程序员
展开
-
哈希表原理
设想一下,你有一个包含约一千条记录的数据文件,比如一个小企业的客户记录,还有一个程序,它把记录读到内存中进行处理。每个记录包含一个唯一的五位数的客户ID号、客户名字、地址、帐户结余等等。假设记录不是按客户ID号顺序分类的,所以,如果程序要将客户ID号作为“key” 来查找一个特殊的客户记录,唯一的查找方法就是连续地搜索每个记录。有时侯,它会很快找到你需要的记录;但有时侯,在程序找到你需要的记录前,原创 2013-04-02 00:52:18 · 635 阅读 · 0 评论 -
数据结构 - 直接插入排序法
数据结构 - 直接插入排序法。之前的博文已经介绍了 冒泡排序法 和 简单选择排序法. 其实上面两种的基本思路是一样的, 就是通过两层循环, 在每1个内循环中找到1个未排序的极值元素, 然后把这个元素移动到数组前列。但是这篇文章介绍的 直接插入排序法 的基本思路则与上面的排序方法不同, 而且可以讲 直接插入排序法 的算法更加直接人类大脑的思路。基本思路一个例子假设我们面前有几张牌|1|2|3|7|原创 2017-02-01 22:02:58 · 2014 阅读 · 0 评论 -
数据结构 - 冒泡排序法详解
数据结构 - 冒泡排序法原创 2017-01-24 23:36:39 · 9511 阅读 · 3 评论 -
数据结构 非线性结构 树 介绍及存储方法
所谓树, 其实跟链表有类似的地方, 就是都是由节点和指针构成的数据结构. 在链表中, 每1个节点(尾节点除外)只有1个指针指向下1个节点. 所以链表各个节点可以由一条线链接起来, 就是一种线性结构. 而在树中, 每1个节点可以有1个或多个指针指向下1个节点, 如下图: 所以树是一种非线性结构, 对于这种原创 2013-05-04 16:12:44 · 5079 阅读 · 0 评论 -
数据结构 --静态队列 讲解
上次我在http://blog.youkuaiyun.com/nvd11/article/details/8805772已经解释了链式队列的大概结构和c语言代码实现.也提到了另一种队列: 静态队列. 其实相对于链式队列来讲. 其实静态队列更加复杂.1. 什么是静态队列.这个不难理解, 所谓静态队列就是以数组为内核的一种队列结构.至于什么是队列可以参考上面的原创 2013-04-19 02:16:24 · 3525 阅读 · 0 评论 -
数据结构 递归讲解
1. 递归的定义 定义好简单了, 如果1个函数直接或间接地调用自己本身, 我们就说它是1个递归. 2. 不同函数是怎样互相调用的. 严蔚敏编写的的数据结构教材中写过这段话: 当1个函数(A)的运行期间 调用 另1个函数(B), 在调用函数B之前,原创 2013-04-24 02:45:56 · 1554 阅读 · 0 评论 -
数据结构 --静态队列的一个简单的C语言代码实现
静态队列的大概原理和部分算法讲解已经在上一篇博文中讲过了..http://blog.youkuaiyun.com/nvd11/article/details/8816699这里接上篇文章, 用c语言来实现1个简单的静态队列容器.'1. 首先编写1个头文件国际惯例, 我们会在这个头文件中写如如下内容:1. 首先是写上静态队列本身的类型.2. 我们也会把这个容原创 2013-04-21 23:11:48 · 1732 阅读 · 0 评论 -
数据结构 二叉树的遍历
所谓遍历, 无非就是把1个容器的所有元素逐个输出, 而这个输出是线性的。 但是二叉树是1个非线性的容器, 如何把它的元素按一定顺序输出就是1个值得学习的课题了。 一般来讲, 遍历二叉树有3种方法, 先序遍历, 中序遍历以及后续遍历。 无论哪一种方法都可以把二叉树里的元素线性输出。但是无论哪种方法,都无法根据输出后的线性元素还原成正确的二叉树结构, 除非先把这棵二叉树转化为完全二叉原创 2013-05-04 21:58:22 · 922 阅读 · 0 评论 -
汉诺塔递归的c语言实现(递归)
对于递归来讲, 汉诺塔实际是经典到不能再经典的例子了, 每个数据结构的教材对会提到. 但是到最后只给出一段类似下面的一段代码:#include void move(int n,char a,char b,char c){ if(n==1) printf("\t%c->%c\n",a,c); //当n只有1个的时候直接从a移动到c原创 2013-04-29 03:38:51 · 76596 阅读 · 9 评论 -
线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.
数据结构大体成上可以分成两种:1. 线性结构.2. 非线性结构( 树,图)1. 什么是线性结构 大概上可以这样定义: 加入所有的节点可以用一条直线连接起来. 就是线性结构...2. 线性机构也可以分成两种: 1) 连续存储 (数组) 也就是指每1个节点在物理内存上是相连的. 2) 离散存原创 2013-04-02 00:58:20 · 1332 阅读 · 0 评论 -
数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似, 例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶), 所以栈能实现"先入后出"的效果. 队列同样有出入口, 只不过出入原创 2013-04-16 21:06:38 · 2002 阅读 · 0 评论 -
数据结构 线性存储 -- 栈 讲解
1.栈的定义 我们有时会听到这句话, 静态定义的内存是在栈中分配的, 动态内存是在堆里面分配的. 例如下面这个简单的函数:int f(int k){ int m = 2 * k; int * p = (int *)malloc(16); return m; }原创 2013-04-14 14:15:03 · 1291 阅读 · 2 评论 -
线性结构--离散存储 链表讲解
数据结构大体成上可以分成两种:1. 线性结构.2. 非线性结构( 树,图)1. 什么是线性结构 大概上可以这样定义: 加入所有的节点可以用一条直线连接起来. 就是线性结构...2. 线性机构也可以分成两种: 1) 连续存储 (数组) 也就是指每1个节点在物理内存上是相连的. 2) 离散存原创 2013-04-06 16:26:56 · 1832 阅读 · 0 评论 -
数据结构--折半查找法 详解
1. 折半查找法定义 折半查找法,也称为二分查找法, 二分搜索, 是一种在有序数组中查找某一特定元素的搜索算法.搜索过程中从数组的中间元素开始, 如果中间元素正好是要查找的元素, 则搜索过程结束;如果某一特定元素大于或者小于中间元素, 则在数组大于或小雨元素的那一半中查找, 而且跟开始一样从中间元素开始比较. 若某1个步骤中数组为空, 则代表找不到. 这种搜索算法每一次比骄傲都原创 2013-04-02 00:57:21 · 3710 阅读 · 0 评论 -
衡量算法的标准
1. 时间复杂度 算法核心部分大概要执行的次数. 而非执行时间. 为什么不能是执行时间. 是因为1个算法在不同的机器和不同的环境中执行时间可能有巨大的差别. 而什么是核心部分大概要执行的时间?原创 2013-04-02 00:57:51 · 1743 阅读 · 0 评论 -
哈希表基本原理详解
这篇文章是参考视频 思胜 ASP.Net C#培训-7-3-下午-1-哈希表基本原理.wmvhttp://v.youku.com/v_show/id_XMjYwNjEwMDg0.html所做的学习笔记..=================================================================== 在实际上的程序实现中, 有1个经典原理,原创 2013-04-02 00:57:34 · 1611 阅读 · 1 评论 -
详解为什么32位系统只能用4G内存.
既然是详解, 就从最基础的讲起了. 1. Bit(位) Bit计算机是计算机最小的存储单位, 大家都知道计算机实质上都是用二进制数0或者1来存储数据的, 所以Bit实际上可以看成存放1个二进制数字的1个位置. 也就是说bit只有2种值, 0 或者 1, 所以1个bit能存放1个布尔类型的值(boolean,是或者否)原创 2013-04-02 00:57:36 · 4393 阅读 · 0 评论 -
数据结构 - 简单选择排序法
数据结构 - 简单选择排序法在之前的博文里已经介绍过排序的两个基本方法:双重循环法和冒泡排序法。基本思想其实上面两种方法的基本思想都是一样的:就是将排序步骤分成两层循环, 在内层的每1个循环中, 找出剩下未排序成员最小(大)的1个, 并将其放到队伍前列。只不过, 冒泡排序法的元素交换更具效率, 通常情况下会比双重循环法更快完成排序。这次介绍的简单选择法的本质也和上面两种方法一样的。冒泡(or 双层循原创 2017-01-31 22:52:53 · 1864 阅读 · 0 评论