数据结构
文章平均质量分 68
Ajay666
这个作者很懒,什么都没留下…
展开
-
单链表实现
目录 线性表是数据结构的第一章,而考研和找工作都喜欢考察这方面的内容,因此,我就用C++实现了单链表,以及一些常见的算法题。本文的具体内容包括:单链表的基本操作反向输出单链表找到两个单链表的第一个公共结点对单链表进行排序将两个有序的链表合在一起,使之仍然有序单链表的基本操作不多说,直接上代码(注意基本操作中参数L的不同):///初始化一个单链表,申请头结点void InitLis原创 2017-06-14 17:30:22 · 574 阅读 · 0 评论 -
栈的C++实现及其应用
栈是一种先进后出的数据结构,是一种功能受限的线性表。因为这世间存在这后进先出的计算顺序,为简化计算的过程,栈得以应用。好比装水的桶,好比装子弹的弹夹。栈的C++实现本文主要是编程实现栈,使用的是顺序储存结构(动态数组)来实现栈,需要注意的是当内存空间不够用,即栈满的时候,应该将重新开辟新的空间(大小为源空间大小+STACK_INCREMENT),然后将数据复制到新空间,在重新释放旧空间。 下面给原创 2017-07-20 14:34:30 · 1489 阅读 · 0 评论 -
链队列的C++实现及其应用
队列是先进先出的数据结构,符合世间万物先到先得的处理顺序。本文将列出如何实现队列。本文使用链表加上头指针和尾指针构成了队列,其中头指针指向队头元素的上一个节点(头结点),尾指针指向队尾元素。链队列实现头文件定义在LinkQueue.h:#ifndef LINKQUEUE_H_INCLUDED#define LINKQUEUE_H_INCLUDEDusing Type = int;type原创 2017-07-20 17:22:09 · 801 阅读 · 0 评论 -
二叉排序树、平衡二叉树以及红黑树
现实生活中,有很多找东西的例子,比如在学校找某个人,在驿站找快递,在信息登记表上查找某个人的信息,那么在计算机科学中,具体有哪些可以加快查找的算法?下面我们就来看看其中的动态查找算法,动态查找的意思是当你查找某个键值的信息,若存在则输出,否则将插入该键值为后续进行查找。二叉排序树首先我们来看看二叉排序树,二叉排序树有点类似于二分查找的思路,但是它用树的形式来表示查找的方向。 定义: (1)一个原创 2017-08-09 22:00:12 · 1325 阅读 · 0 评论 -
B-树和B+树
前面提到的平衡二叉树用于查找十分方便,但是这种树只能用于数据量较小的场景。当数据集较大,比如有几百万行记录的文件,其容量超过了内存的大小,就需要储存在磁盘上。在这种时候,平衡二叉树的表现并不理想,因此需要一种更好的数据结构(在数据库中叫做索引)来加快查找,这就是B树或者B+树。B-树(balance-search-tree)一颗m阶的B-树或为空树,或为满足下列特性的m叉树: (1)树中每个节点原创 2017-08-11 12:11:55 · 612 阅读 · 0 评论 -
二叉树的C++实现
数据结构与二叉树类的定义我采用链式存储结构来表示二叉树,每一个二叉树节点包含树节点的值、树的左孩子指针、树的右孩子指针:class BiNode{public: char data; struct BiNode *lchild,*rchild;};那么对于一个二叉树来说,只需要存放指向树根节点的指针即可,另外还需要声明二叉树的一些功能,比如遍历方法、求树高等(BiTree.h):原创 2017-08-05 22:26:28 · 29825 阅读 · 13 评论 -
利用二叉树的非递归后序遍历求解最近公共祖先问题
通过上一篇的博客我们知道,可以利用栈来实现二叉树的后序遍历。其实这里有一个性质,就是当使用非递归后序遍历时,栈中的元素就是当前节点到根节点的路径。利用这个规律,我们就可以求解最近公共最先问题了。算法找出两个节点各自到根节点的路径。这里利用非递归后序遍历二叉树,既可以找到两个节点到根节点的路径。根据路径找出最近的公共祖先。首先根节点肯定是他们的祖先,可以从跟节点开始查找,直到最后一个相同的树节点原创 2017-08-05 22:38:34 · 2972 阅读 · 1 评论