数据结构
_Hansen_
这个作者很懒,什么都没留下…
展开
-
双向链表的实现
双向链表的具体实现,主要按照 头文件定义、接口函数定义 和测试main程序 三部分来说明。本文主要读者为数据结构的初学者,为了便于理解,链表节点与 数据 未作分离。特别声明,本文提供源码在VC6.0上验证通过。原创 2017-04-30 17:49:36 · 457 阅读 · 0 评论 -
循环队列的实现
需求描述:实现一个固定长度的字符缓存管理结构,实现字符串的写入和读出。1)队列加数据,向cb尾追加长为length的字符串,存在putting中; 当缓冲剩余空间remain<length时,追加长为remain的字符串,函数返回实际有效存放到缓冲中的字符串;2)队列取数据,在cb中读取长度为length的字符串,存于getting中;当队列存放的字符数used<length时,只读取长为used的字符串,读取字符串后,队列中相应缓冲不再使用。原创 2017-04-30 19:04:22 · 811 阅读 · 0 评论 -
英文单词统计程序
本文使用hash表实现一个英文单词统计程序,输入英文段落文件EnglishFile.txt,统计结果按顺序输出到Stat_result.txt 文件当中。特别声明,小程序在VC6.0中验证通过。原创 2017-04-30 20:31:27 · 935 阅读 · 0 评论 -
静态链表的实现
静态链表,实际上就是在一个块内存或者大数组上,通过索引游标实现链表式的管理。一个主要的应用场景就是,一张有限长度的有序表 存在高频次增、删操作的情况。原创 2017-04-30 21:00:18 · 606 阅读 · 0 评论 -
双栈实现计算器
需求描述:使用一个双向栈实现一个简易计算器,可以计算加减乘除,带小括号(),如 3+2*(3-4)+2=基本实现方法:双向栈的top端存运算数字,base端存运算符。读取数学运算式,若遇到数字,直接压栈;若遇到运算符,比较运算优先级。若后面的运算符优先级大于前一个运算符(即栈头运算符),运算符压栈,否则,数字出栈进行计算,再把计算结果压栈,后面继续读取字符计算,直到遇到=字符运算结束。原创 2017-04-30 19:27:06 · 2132 阅读 · 0 评论 -
二叉搜索树之AVL树
AVL树在ROS系统中应用广泛,如路由表管理模块和FEC表,这些大容量又操作频繁的数据,采用AVL树存储结构可以有效提高系统效率。AVL树又称为高度平衡的二叉搜索树(BST),是1962年由两位俄罗斯数学家G.M.Adel’ son-Vel'sky和E.M.Landis在论文《An algorithm for the organization of information》中提出的。引入它的目的,是为了提高BST的搜索效率,即减少平均搜索长度。为此,向BST中每插入或删除一个新结点时,就必须调整树的结构原创 2017-04-30 19:57:07 · 562 阅读 · 0 评论 -
二叉排序树之红黑树
红黑树的介绍先来看下算法导论对R-B Tree的介绍:红黑树,一种二叉搜索树(Binary Search Tree,BST),但在每个结点上增加一个存储位表示结点的颜色,可以是RED或BLACK。既然它是一种BST,它就具有BST的一般性质。通过对任何一条从根结点到叶子结点的路径上结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的。这里,必须要注意,红黑树不像AVL,是高度平衡的BST,红黑树不是绝对平衡的,它存在某结点的左右子树高度差大于二的情况。原创 2020-08-16 19:32:55 · 712 阅读 · 0 评论