
数据结构
badman250
专注分享IT知识技能
展开
-
45. 数据结构笔记之四十五克鲁斯卡尔算法
45. 数据结构笔记之四十五克鲁斯卡尔算法 “假如生活欺骗了你 ,不要忧郁 , 也不要愤慨 !不顺心的时候暂且容忍 : 相信吧 , 快乐的日子就会到来。--普希金” 上两篇学习了弗洛伊德和迪杰特斯拉算法。这次来看下克鲁斯卡尔算法。1. 克鲁斯卡尔算法克鲁斯卡尔(Kruskal)算法是在剩下的所有未选取的边中,找最小边,如果和原创 2017-09-21 21:22:57 · 6667 阅读 · 1 评论 -
27、数据结构笔记之二十七数组的定义和概念
27、数据结构笔记之二十七数组的定义和概念“人生最终的价值在于觉醒和思考的能力,而不只在于生存。--亚里斯多德” 学习了串以及串的几个应用,包括文本编辑,词索引等。这篇开始我们学习数组。首先来介绍数据的一些定义和概念。1. 数组数组可以看成是一种特殊的线性表,是线性表的推广,其特点是数据元素仍然是一个表,即线性表中数据元素本身也是一个线性表2. 数组原创 2017-09-20 21:25:39 · 4376 阅读 · 0 评论 -
26、数据结构笔记之二十六串应用之建立词索引表
26、数据结构笔记之二十六串应用之建立词索引表 “生命是一条美丽而曲折的幽径,路旁有妍花的丽蝶,累累的美果,但我们很少去停留观赏,或咀嚼它,只一心一意地渴望赶到我们幻想中更加美丽的豁然开朗的大道。然而在前进的程途中,却逐渐树影凄凉,花蝶匿迹,果实无存,最后终于发觉到达一个荒漠。-- 萨拉” 1. 信息检索信息检索是计算机应用的重要领域之一。为了提高图书原创 2017-09-20 21:24:33 · 7185 阅读 · 0 评论 -
3、数据结构笔记之三线性表单项链表实现
3、数据结构笔记之三线性表单项链表实现“人生的价值,即以其人对于当代所做的工作为尺度。”1. 声明结构如下声明一个指向结构的指针。(存放整数的节点,我们也可以根据需要创建字符的链表) typedefstructlist_node *list_pointer; typedefstructlist_node{原创 2017-09-10 15:33:49 · 3387 阅读 · 0 评论 -
12、数据结构笔记之十二栈的应用之栈与递归之阶乘实现
12、数据结构笔记之十二栈的应用之栈与递归之阶乘实现 :“人生的价值,应当看他贡献什么,而不应当看他取得什么。” 本篇学习关于栈和递归的应用。1. 阶乘一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且有0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。任何大于 1 的自然数n原创 2017-09-10 15:43:47 · 4159 阅读 · 0 评论 -
11、数据结构笔记之十一栈的应用之表达式求值实现
11、数据结构笔记之十一栈的应用之表达式求值实现 “人生不售来回票,一旦动身,绝不能复返。” 继续栈应用实现 1. 表达式求值表达式求值是设计语言编译中的一个基本问题,它的实现是栈应用的又一个典型例子。任何一个表达式都是由操作数(Operand)、运算符(operator)和界限符(delimiter)组成。原创 2017-09-10 15:43:00 · 3975 阅读 · 0 评论 -
10、数据结构笔记之十栈的应用之迷宫求解实现
10、数据结构笔记之十栈的应用之迷宫求解实现 “人生是伟大的宝藏,我晓得从这个宝藏里选取最珍贵的珠宝。” 继续栈的应用,这次实现迷宫求解。1. 迷宫求解计算机解迷宫时,通常是用穷举求解,从入口出发,顺某个方向向前探索,通则往前,不通则返回。显然是不要一个后进先出的饥饿哦股来保存从入口到当前位置的路径。算法描述:设定当前位置的原创 2017-09-10 15:42:09 · 3885 阅读 · 0 评论 -
9、数据结构笔记之九栈的应用之行编辑实现
9、数据结构笔记之九栈的应用之行编辑实现 “人生照例是一场值得一搏的争衡,然而它的奖品是拼斗。” 1. 行编辑行编辑的功能是接受用户从终端输入的程序或数据。每接受一个字符即存入用户数据区的做法不是最恰当的。好的做法是建立一个缓存区,允许洪湖输入出错,并在发现有无时可以及时更正。用栈来实现这个输入缓冲区是非常适合的。每当从终端接受了一个字符后先作判别,如果原创 2017-09-10 15:40:44 · 5937 阅读 · 0 评论 -
8、数据结构笔记之八栈的应用之括号匹配检验实现
8、数据结构笔记之八栈的应用之括号匹配检验实现 “人生的意义就在这个过程上。你要细细体认和玩味这个过程中的每节,无论它是一节黄金或一节铁;你要认识每节的充分价值。” 1. 括号匹配问题括号匹配问题是指要匹配一个字符串的左,右括号:括号问题可以用来解决C语言中的“{”和“}”的匹配问题,可以观察到,如果从左至右扫描一个字符串,那么每个右括号将于最近遇到的那个未匹配的原创 2017-09-10 15:39:51 · 4013 阅读 · 0 评论 -
7、数据结构笔记之七栈的应用之数制转换
7、数据结构笔记之七栈的应用之数制转换 “人生意义的大小,不在乎外界的变迁,而在乎内心的经验。” 来看下栈在数制转换的作用。 1. 原理介绍 十进制N和其他进制数的转换时计算机实现计算的基本问题。简单算法如下:N=(N div d )x d + N modd 2. 实现原创 2017-09-10 15:38:42 · 3929 阅读 · 0 评论 -
6、数据结构笔记之六链队列实现
6、数据结构笔记之六链队列实现 “人生天地之间,若白驹之过隙,忽然而已。”。1. 定义如下图所示,和链栈基本一致。#defineIS_EMPTY(ptr)(!(ptr))#defineIS_FULL(ptr) (!(ptr)) typedefstructelement{ intkey; /*otherfields *原创 2017-09-10 15:37:38 · 3474 阅读 · 0 评论 -
5、数据结构笔记之五链栈实现
5、数据结构笔记之五链栈实现 “人生就像奕棋,一步失误,全盘皆输。” 对栈和队列进行了定义。这次我们来看下如何使用代码来实现链栈和链队列。 1. 定义结构体 #defineMAX_STACKS10typedefstruct { intkey; /*otherfields */}element原创 2017-09-10 15:36:29 · 3433 阅读 · 0 评论 -
4、数据结构笔记之四栈和队列定义
4、数据结构笔记之四栈和队列定义 “人生应该如蜡烛一样,从顶燃到底,一直都是光明的。”1. 栈栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除原创 2017-09-10 15:35:09 · 3486 阅读 · 0 评论 -
2、数据结构笔记之二线性表
2、数据结构笔记之二线性表“人生中最重要的不是位置,而是前进的方向”1. 定义线性表(亦作顺序表)是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。 接触过数据库原创 2017-09-07 23:52:11 · 3489 阅读 · 0 评论 -
20. 数据结构进阶二十文件相关概念
20. 数据结构进阶二十文件相关概念“生活是欺骗不了的,一个人要生活得光明磊落。 --冯雪峰”最后在数据结构进阶这块,我们来看些文件相关的概念。1. 文件 文件是性质相同的记录的集合。文件的数据量通常很大,它被放置在外存上。 1.1 顺序文件 顺序文件是指按记录进入文件的先后顺序存放、其逻辑顺序跟物理顺序一致的文件。若顺序文件中的记录按原创 2017-09-24 21:25:18 · 5823 阅读 · 0 评论 -
19. 数据结构进阶十九外部排序相关概念
19. 数据结构进阶十九外部排序相关概念“一个人最怕不老实,青年人最可贵的是老实作风。 "老实 " 就是不自欺欺人,做到不欺骗人家容易,不欺骗自己最难。 "老实作风 " 就是脚踏实地,不占便宜。世界上没有便宜的事,谁想占便宜水就会吃亏。 --徐特立”之前我们学习的排序都是内部排序的,接下去来看下外部排序。 1. 外部排序指的是大文件(外存文件)中的记录进行排序的过原创 2017-09-24 21:24:39 · 5849 阅读 · 0 评论 -
28、数据结构笔记之二十八数组之矩阵
28、数据结构笔记之二十八数组之矩阵“在命运的颠沛中,最可以看出人们的气节。 --莎士比亚”上篇咱们看了数组的一些定义和概念,接下去我们来看下数据和矩阵。 1. 特殊矩阵二维数组可以来存储矩阵元素。有的程序设计语言中还供了各种矩阵运算,给用户使用带来很大的方便。然而,在数值分析中经常出现一些高阶矩阵,在这些高阶矩阵中有许多值相同的元素或者是零元素,为了节省存储空间对原创 2017-09-20 21:27:29 · 4094 阅读 · 0 评论 -
29、数据结构笔记之二十九数组之硬币抛掷模拟
29、数据结构笔记之二十九数组之硬币抛掷模拟 “人生是各种不同的变故、循环不已的痛苦和欢乐组成的。那种永远不变的蓝天只存在于心灵中间,向现实的人生去要求未免是奢望。--巴尔扎克” 1. 硬币抛掷如果抛掷硬币N次,看到头像的期望值是N/2次,但实际值也可能是0~N次,在程序中进行M次试验,M和N都在代码中定义。它使用一个数组f来跟踪出现“i次头像”的概率,其中0≤j≤原创 2017-09-20 21:28:29 · 3792 阅读 · 0 评论 -
44. 数据结构笔记之四十四弗洛伊德Floyd算法
44. 数据结构笔记之四十四弗洛伊德Floyd算法“希望是厄运的忠实的姐妹。 --普希金”继续来看下数据结构图中的一个算法,这个算法来自图灵奖得主。1. Floyd算法介绍Floyd算法又称为插点法,是一种用于寻找给定的加权图中多源点之间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。注意这个可不是心理学的那个弗洛伊原创 2017-09-21 21:20:43 · 4521 阅读 · 0 评论 -
43. 数据结构笔记之四十三最短路径之迪杰斯特拉(Dijkstra )算法
43. 数据结构笔记之四十三最短路径之迪杰斯特拉(Dijkstra )算法“辛勤的蜜蜂永没有时间悲哀。--布莱克”这次来看下Dijkstra )算法。还是老方法,先原理,后实现。代码来自网络。1. 最短路径最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 管道铺设、线路安排、厂区布局、设备更新等Dijkstra原创 2017-09-21 21:19:35 · 4878 阅读 · 0 评论 -
42. 数据结构笔记之四十二图的遍历之广度优先
42. 数据结构笔记之四十二图的遍历之广度优先“生活真象这杯浓酒 , 不经三番五次的提炼呵 , 就不会这样一来可口 ! --郭小川”继续看下广度优先的遍历,上篇我们看了深度遍历是每次一个节点的链表是走到底的。 1. 原理首先,从图的某个顶点v0出发,访问了v0之后,依次访问与v0相邻的未被访问的顶点,然后分别从这些顶点出发,广度优先遍历,直至所有的顶点都被访问完。原创 2017-09-21 21:18:53 · 4008 阅读 · 0 评论 -
41 数据结构笔记之四十一图的遍历之深度优先
41 数据结构笔记之四十一图的遍历之深度优先“对于我来说 , 生命的意义在于设身处地替人着想 , 忧他人之忧 ,乐他人之乐。 -- 爱因斯坦”上篇我们实现了图的邻接多重表表示图,以及深度遍历和广度遍历的代码,这次我们先来看下图的深度遍历。 1. 原理图遍历又称图的遍历,属于数据结构中的内容。指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操原创 2017-09-21 21:18:00 · 4333 阅读 · 0 评论 -
40. 数据结构笔记之四十图的邻接多重链表表示实现
40. 数据结构笔记之四十图的邻接多重链表表示实现“一个人的价值 , 应当看他贡献什么 , 而不应当看他取得什么。--爱因斯坦”1. 邻接多重表邻接多重表(AdjacencyMultilist)主要用于存储无向图。因为,如果用邻接表存储无向图,每条边的两个边结点分别在以该边所依附的两个顶点为头结点的链表中,这给图的某些操作带来不便。例如,对已访问过的边做标记,或者要删除图中某原创 2017-09-21 21:16:50 · 5471 阅读 · 1 评论 -
39.数据结构笔记之三十九图的邻接表表示实现
39.数据结构笔记之三十九图的邻接表表示实现“如果我曾经或多或少地激励了一些人的 , 努力 , 我们的工作 , 曾经或多或少或少地扩展了人类的理解范围 , 因而给这个世界增添了一分欢乐 , 那我也就感到满足了。--爱迪生”我们来看下图的另一种存储表示方法。1. 邻接表原理邻接矩阵是不错的一种图存储结构,但是,对于边数相对顶点较少的图,这种结构存在对存储空间的极大浪费。因此,找到一种原创 2017-09-21 21:14:37 · 4177 阅读 · 0 评论 -
38. 数据结构笔记之三十八图的邻接矩阵存储实现
38. 数据结构笔记之三十八图的邻接矩阵存储实现“世界上有两种人,一种人,虚度年华;另一种人,过着有意义的生活。在第一种人的眼里,生活就是一场睡眠,如果在他看来,是睡在既温暖又柔和的床铺上,那他便十分心满意足了;在第二种人眼里,可以说,生活就是建立功绩......人就在完成这个功绩中享到自己的幸福。 --别林斯基” 来看下图的邻接存储实现。1. 邻接矩阵存储原理对于线性表来原创 2017-09-21 21:12:16 · 4278 阅读 · 0 评论 -
37. 数据结构笔记之三十七图的概念
37. 数据结构笔记之三十七图的概念 “宿命论是那些缺乏意志力的弱者的借口。--罗曼?罗兰” 咱们来看 这个图,图一看给人一种凌乱的感觉。那么它在数据结构中又是什么呢? 1. 图的概念图(graph)是一种比线性表、树更为复杂的数据结构。在线性表中,数据元素之间呈线性关系,即每个元素只有一个直接前驱和一个直接后继。在树型结构中,数据原创 2017-09-21 21:10:48 · 4385 阅读 · 0 评论 -
36. 数据结构笔记之三十六赫夫曼树
36. 数据结构笔记之三十六赫夫曼树 “假如生活欺骗了你,不要忧郁,也不要愤慨!不顺心的时候暂且容忍:相信吧,快乐的日子就会到来。 --普希金” 我们来学习赫夫曼树,当然也是哈夫曼树,音译不同,大伙不用太较劲。 什么是赫夫曼呢?为什么叫赫夫曼树呢?1. 简介赫夫曼在上世纪五十年代初就提出这种编码时,根据字符出现的原创 2017-09-20 21:38:34 · 4596 阅读 · 0 评论 -
35. 数据结构笔记之三十五遍历二叉树
35. 数据结构笔记之三十五遍历二叉树 “冬天已经到来,春天还会远吗? --雪莱” 我们来看徐璈如何遍历二叉树。1. 二叉树遍历 二叉树的遍历有三种方式,如下:(1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树。简记根-左-右。(2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树。简记左-根-右。(3)原创 2017-09-20 21:37:19 · 3851 阅读 · 0 评论 -
34. 数据结构笔记之三十四树的概念
34. 数据结构笔记之三十四树的概念“过去属于死神,未来属于你自己。--雪莱”本篇笔记开始我们要进入新的概念了,树!我们从概念开始吧当然概念要理解,如果当前不能立刻理解,可以后续结合代码一起理解效果更佳。 1. 树型结构之前我们学习的那么多,其实都是线性数据结构。树 则不同,它是非线性结构。树形结构指的是数据元素之间存在着“一对多”的树形关系的数据结构,是一类重要原创 2017-09-20 21:35:17 · 3894 阅读 · 0 评论 -
33. 数据结构笔记之三十三广义表实现二
33. 数据结构笔记之三十三广义表实现二” 希望是附丽于存在的,有存在,便有希望,有希望,便是光明。--鲁迅”我们继续来看下广义表的其他代码实现。代码均来自网络,均亲测可行。1. 广义表实现二1.1 main创建两个链表的指针head和L。输入一个字符串,调用GLCreate函数创建广义表。显示,获取头表,尾表,输出长度,深度,原子个数,复制列表,Merg原创 2017-09-20 21:32:29 · 4206 阅读 · 0 评论 -
32. 数据结构笔记之三十二广义表实现一
32.数据结构笔记之三十二广义表实现一“谁要是游戏人生,他就一事无成;谁不能主宰自己,永远是一个奴隶。--歌德”我们来看下广义表的代码实现。 1. 广义表实现一1.1 main输入一个数字,调用函数creatglist创建广义表。广义表的内容是一个char,超过一个char就失效。 1.2 定义typedefstr原创 2017-09-20 21:31:35 · 3875 阅读 · 0 评论 -
31. 数据结构笔记之三十一广义表
31. 数据结构笔记之三十一广义表 “自己活着,就是为了使别人活得更美好。--雷锋” 我们继续来学习广义表。1. 什么是广义表广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。在LISP语言中,广义表是原创 2017-09-20 21:29:41 · 3906 阅读 · 0 评论 -
30. 数据结构笔记之三十数组之厄拉多塞筛
30. 数据结构笔记之三十数组之厄拉多塞筛 “勤劳远比黄金可贵。 --萨迪”1. 厄拉多塞 厄拉多塞是一位古希腊数学家,他在寻找素数时,采用了一种与众不同的方法:先将2-N的各数放入表中,然后在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数是3,将它画圈,再划去3的其他倍数;现在既未画圈又没有被划去的第一个数是5,将它画圈,并划去5原创 2017-09-20 21:29:08 · 5786 阅读 · 0 评论 -
17. 数据结构进阶十七排序实现之归并排序
17. 数据结构进阶十七排序实现之归并排序“人生不是一种享乐 , 而是一桩十分沉重的工作。-- 列夫 .托尔斯泰”我们来看下归并排序。 1. 归并排序归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个原创 2017-09-24 21:22:18 · 7403 阅读 · 0 评论 -
49. 数据结构笔记之四十九图的连通性问题
49.数据结构笔记之四十九图的连通性问题 “我们不得不饮食、睡眠、游惰、恋爱,也就是说,我们不得不接触生活中最甜蜜的事情:不过我们必须不屈服于这些事物 .....--约里奥?居里” 此篇就作为数据结构入门笔记的最后一篇吧。 设图G=(V,E)是一个无向图,G的一个连通分支是一个最大的连通子图,即一个连通分支是不包含在任何更大的连通子图中原创 2017-09-21 21:30:17 · 4388 阅读 · 0 评论 -
48. 数据结构笔记之四十八的有向无环图的应用关键路径
48. 数据结构笔记之四十八的有向无环图的应用关键路径“富贵不淫贫贱乐 , 男儿到此是豪雄。-- 程颢”来看下有向无环图的另一个应用关键路径。1. 关键路径与AOV-网相对应的是AOE-网(Activity On Edge)即边表示活动的网。AOE-网是一个带权的有向无环图,其中,顶点表示事件(Event),弧表示活动,权表示活动持续的时间。通常,AOE-网可用来估算工程的完原创 2017-09-21 21:29:04 · 4914 阅读 · 0 评论 -
47. 数据结构笔记之四十七的有向无环图的应用排序
47. 数据结构笔记之四十七的有向无环图的应用排序 “君子喻于义 ,小人喻于利。 -- 孔丘” 接下去来看下有向无环图。1. 有向无环图一个无环的有向图称做有向无环图(directed acycline praph)。简称DAG图。DAG 图是一类较有向树更一般的特殊有向图,图1给出了有向树、DAG图和有向图有向无环图是描述含有公共子原创 2017-09-21 21:27:22 · 4553 阅读 · 0 评论 -
25、数据结构笔记之二十五串应用之文本编辑
25、数据结构笔记之二十五串应用之文本编辑 “正如恶劣的品质可以在幸运中暴露一样,最美好的品质也是在厄运中被显示的。 --培根” 由于前段时间一直出差在外,间断了半个月,今天开始继续学习数据结构。1. 文本编辑 本文编辑程序是一个面向用户的系统服务程序,广泛用于源程序的输入和修改,甚至用于报刊和书籍的编辑排版以及办公室的公原创 2017-09-14 00:10:05 · 5491 阅读 · 0 评论 -
24、数据结构笔记之二十四串的模式匹配算法
24、数据结构笔记之二十四串的模式匹配算法 “燧石受到的敲打越厉害,发出的光就越灿烂。 --马克思” 来看下两个算法,BF和KMP算法在串的模式匹配中实现。1. BF算法BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和原创 2017-09-14 00:08:00 · 3828 阅读 · 0 评论 -
23、数据结构笔记之二十三串的堆分配实现
23、数据结构笔记之二十三串的堆分配实现 “人的价值是由自己决定的。” 接下去是看下如何用C实现串。 1. 定义定义结构体如下,一种字符数组,一个表示数组的长度。以一组地址连续的存储单元存放串值字符序列,但是他们的存储空间是在程序执行过程中动态分配而得。typedefstruct { charch[MAXLEN];原创 2017-09-14 00:07:26 · 3721 阅读 · 0 评论