![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
weixin_36229332
这个作者很懒,什么都没留下…
展开
-
c++模拟实现vector
上一篇说到了list,这一篇我们来讨论讨论vectorvector和list都是STL中的常见容器。它是一种顺序容器,支持随机访问。和数极为相似,都是一块连续的内存空间。数组有的功能,它基本都能实现。和数组不同的地方在于:数组分配到的空间是死的,不可变的;而vector却可以随着元素的不断插入,它自己会进行增容。当程序员无法知道到底需要多大的空间的时候,这无疑是最好的方法,并且可以原创 2017-12-05 21:01:45 · 275 阅读 · 0 评论 -
模拟实现list
list是类库中的一个类,可以将其视为双向链表。使用它的好处是在任何位置增加或删除元素都很快缺点是不支持随机存取话不多说,直接上代码:代码后面都有注释,希望看完可以对你有帮助。#include#include#includeusing namespace std;#pragma oncetypedef int DataType;struct原创 2017-12-05 20:47:10 · 209 阅读 · 0 评论 -
栈和队列
/*#include#includeusing namespace std; templateclass Stack{private: T* _pdata; size_t _size; size_t _capacity;public: Stack() :_pdata(NULL) , _size(0) , _capacity(0) {} ~Stack原创 2017-11-20 23:02:43 · 123 阅读 · 0 评论 -
链表相关练习题
#include#include#includeusing namespace std;typedef struct Node{ Node* _pNext; int _data;}*PNode;//初始化链表void InitList(PNode* pHead){ assert(pHead); *pHead = NULL;}//查找单链表的中间节点,只能遍历原创 2017-11-12 19:35:16 · 187 阅读 · 0 评论 -
插入排序——直接插入排序、二分插入排序、希尔排序
选择排序是一种较为简单的排序算法。它的实现原理是每一次从待排序的数据元素中挑出一个最小(大)的元素,存放在数据的起始(末尾)位置,直到所有待排序的数据排完。直接插入排序:当插入第i个元素的时候,我们认为它前面的i个元素已序。这时候用array[i]的排序吗与前面的排序码进行比较,找到适合的位置就进行插入,原来位置上的元素按顺序向后移动。 时间复杂度: 最差:和原创 2018-01-24 21:56:36 · 293 阅读 · 0 评论 -
AVL树——左单旋、右单旋、左右双旋、右左双旋
本篇文章主要介绍AVL树的四种旋转方法。首先,右单旋:插入节点位于根节点的左子节点的左子树。void _RotateR(Node* parent) { Node* subL = parent->_left; Node* subLR = subL->_right; parent->_left = subLR; if (subLR) subLR->_p...原创 2018-04-03 11:06:41 · 2173 阅读 · 1 评论 -
哈希表——线性探测、二次探测
线性表,二叉搜索树、AVL树、红黑树B树中,元素在存储结构中的位置与元素的关键码之间不存在直接的对应关系。在数据结构中搜索一个元素需要进行一系列的关键码比较。搜索的效率取决于搜索过程中比较的次数。理想的搜索方法是可以不经过任何比较,一次直接从表中得到要搜索的元素。如果构造一种存储结构,使元素的存储位置与它的关键码之间建立一个确定的对应函数关系Hash(),那么每个元素关键码与结构中的一个唯一的存储...原创 2018-04-03 11:24:27 · 2457 阅读 · 0 评论