
数据结构
绘夜
这个作者很懒,什么都没留下…
展开
-
数据结构1:顺序表
在计算机中主要有两种基本的数据结构来存放线性表:顺序表以及链表。其中链表又可以分为单链表,双向链表,单循环链表,双向循环链表,静态链表等。这些都是后话,我们首先对顺序表进行分析。作为数据结构最入门的存储结构,它是很有意义的。 顺序表1.顺序表的结构 在编写顺序表所实现的相关函数之前,我们先要确定顺序表的结构。那么什么是顺序表呢? 定义: 顺序表是在计算机内存...原创 2017-10-05 18:12:12 · 727 阅读 · 0 评论 -
单链表
链表作为非常常见的一种数据结构,广泛应用于各个场合中。相比于顺序表,它不需要一段连续的内存,而是通过next指向自己的下一个节点。链表的定义如下:typedef struct Node{ int data; struct Node* next;}Node,*List;结构是一个数据域,一个next指针。一般来说链表带有头节点会方便原创 2017-09-24 12:38:11 · 215 阅读 · 0 评论 -
数据结构:AVL树的平衡调整——LL,LR,RL,RR
AVL树的全称是平衡搜索二叉树,本质上也是一个二叉搜索树(BST),满足BST树的所有性质。但是我们在使用二叉搜索树的时候,我们知道通常情况在BST中搜索一个节点的时间复杂度是O(lgn)。最坏的情况为O(n),这种情况就是出现连续的左子树/右子树,如下图所示:这种情况其实就已经是链式存储,无法将树的优势体现出来。为了避免这种情况,我们就要保证这个树随时都是平衡的。当然要求不能...原创 2018-09-26 01:27:47 · 11470 阅读 · 3 评论 -
C++实现用两个栈模拟一个队列
问题描述用两个栈来实现一个队列,队列的声明如下,实现其中的两个函数,分别完成在队列尾部插入节点和在队列头部删除节点的操作。声明:template <typename T> class CQueue{public: CQueue(void); ~CQueue(void); void appendTail(const T& eleme...原创 2018-09-27 12:48:52 · 1958 阅读 · 0 评论 -
二叉树遍历:前序,中序,后序,层序的递归以及非递归实现
树,是一种在实际编程中经常遇到的数据结构,它的逻辑很简单:除根节点之外每个节点都有且只有一个父节点,除叶子节点之外所有节点都有一个或多个子节点。我们说的二叉树,就是指子节点最多2个的树。二叉树中,最重要的操作就是遍历。二叉树的遍历分为:1.前序遍历:先访问根节点,再访问左子节点,最后访问右子节点。2.中序遍历:先访问左子节点,再访问根节点,最后访问右子节点。3.后序遍历:先访问左子...原创 2018-10-06 16:12:59 · 3712 阅读 · 2 评论