
数据结构
文章平均质量分 86
FastestSnail
This is the snail who can run and even can fly.
展开
-
使用C++实现双向链表List
参考教程《数据结构与算法分析 C++描述 》第三版和第四版这次写的过程中,发现的两个新的 问题:第一:自己定义的数据结构UDT如果需要使用C++11中的范围for语句,需要定义begin和end函数。如果遍历的是常量对象,则要有相应的常量对象可用的begin和end函数。声明形式如下:iterator begin();const_iterator begin() const;原创 2016-11-29 22:29:09 · 1362 阅读 · 0 评论 -
使用C++实现AVL树模板
今天练习编写了一下AVL树。参考了Weiss的数据结构与算法C++描述版。上一个实现的一个一般的二叉搜索树,在使用的过程中可能会慢慢变得不平衡,这样很可能会降低查找、插入等等的效率,因此我们需要使用算法来实现树的平衡。AVL树是一种比较经典的平衡二叉搜索树,它规定每个节点的左子树和右子树的高度差最多为1,默认空树的高度为-1,这样能保证树的深度为O(logN),而且除了遍历,赋值,基本上所有树的操作都可以以时间O(logN)执行(当然插入和删除后因为要重新平衡树,可能时间会长于O(logN))。(Ps,上面原创 2016-12-13 22:32:51 · 6055 阅读 · 1 评论 -
编写了一个计算器小程序,作为栈的练习
一个计算器小程序的实现。用户可以及时输入,然后将用户输入的表达式(中缀表达式)转换成后缀表达式,然后计算。原创 2016-12-07 19:53:07 · 2871 阅读 · 0 评论 -
使用C++实现Vector
使用C++实现了简化的Vector类原创 2016-11-26 20:03:53 · 818 阅读 · 0 评论 -
C++实现二叉搜索树(二叉排序树)模板类
参考了Weiss的数据结构与算法分析C++描述第三版完成二叉搜索树原创 2016-12-09 21:51:48 · 2735 阅读 · 0 评论 -
使用C++实现二叉堆
二叉堆可以用来实现优先队列。二叉堆是一棵完全二叉树,除了叶子节点那一层,其他的层都是满的,叶子节点那一层是从左往右依次存放的,因此它们的父子元素的索引有数学公式可以参考,对于节点i来说,它的左儿子是2i,右儿子是2i+1,它的父亲节点是i/2向下取整,因此,在其内部我们可以通过数组来实现元素的存储,从而不需要链式结构,可以节约存储空间,提高访问速度(但是如果有合并操作,则会很慢,此时使用链式结构是原创 2016-12-26 16:21:46 · 1633 阅读 · 0 评论