数据结构
文章平均质量分 92
Solieaor
这个作者很懒,什么都没留下…
展开
-
哈希表之闭散列
闭散列(即开放地址法):当发生哈希冲突时,如果该哈希表还没有被填满,那么就把该元素放到哈希表的下一个空闲的位置。代码实现思路:哈希表结构的封装首先我们能够知道哈希表是否冲突。我们使用状态标记来查看哈希表是否冲突。那么就有三种状态:当前位置空着,当前位置存在元素,当前元素已经被删除(这个一会会在删除的时候讲到)接下来我们要对哈希表每一个存储位置空间去进行描述;哈希表每一个存储位置都有哪些元素:key、value、状态标记;最后哈希表的构造。整个哈希表是由一个个存储位置构成的,包括哈希表当前有效的原创 2020-08-02 21:35:22 · 306 阅读 · 0 评论 -
链表之C++实现
Slist.hpp#include<iostream>using namespace std;typedef struct Node{ struct Node* next; int data;}Node;class Slist{public: Slist() :head(nullptr){} Node* BuySlistNode(const int ...原创 2019-11-01 18:07:30 · 122 阅读 · 0 评论 -
队列之C++实现
Queue.hpp#include<iostream>using namespace std;typedef struct QueueNode{ QueueNode() :next(nullptr) {} struct QueueNode* next; int data;}Node;class Queue{public: Queue() ...原创 2019-11-03 11:52:33 · 115 阅读 · 0 评论 -
顺序表和链表对比
1、底层结构上顺序表底层结构是一段连续的空间(也可以这么说顺序表底层空间是逻辑上和物理上都是连续的)链表底层结构是动态的创建不连续的空间(链表底层是逻辑上连续,物理上不连续)2、随机访问顺序表支持随机访问,访问某个元素效率为o(1)链表不支持随机访问,访问某个元素的效率为o(n)3、插入和删除效率顺序表的插入删除效率低,需要搬移元素,时间复杂度为o(n),并且再插入的时候还有可能需要...原创 2019-11-02 16:03:20 · 516 阅读 · 0 评论 -
栈之C++实现
Stack.hpp#include<iostream>using namespace std;class Stack{public: Stack(int* array,int size = 3) :_array(nullptr) ,_size(0) ,_capacity(size){ _array = new int[_capacity];...原创 2019-11-02 15:20:44 · 77 阅读 · 0 评论 -
顺序表之C++实现
#include<iostream>using namespace std;template<class T>class SeqList{public: SeqList(T* array,int size) :_array(new T[size]) ,_capacity(size) ,_size(0) { for(int i=...原创 2019-10-30 12:06:41 · 84 阅读 · 0 评论 -
插入排序
插入排序基本思想:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个有序的序列那么插入排序是怎么借助上面的思想实现的呢?在实际生活中我们玩扑克牌的时候,就使用了插入排序的思想插入排序步骤的总结1、从第一个元素开始,该元素可以被认为已经排好序2、 取出下一个元素,依次与前面的元素比较。3、如果大于前面的元素,则继续往前...原创 2019-07-29 14:25:32 · 83 阅读 · 0 评论 -
二叉树链式结构的实现
对于二叉树链式结构的实现,理解二叉树的概念至关重要。在二叉树的创建以及求二叉树叶子节点的个数等其他操作时,都是先从二叉树的概念入手,一步一步完成二叉树的创建及其他操作,接下来看一下二叉树的概念二叉树的概念空树根节点+根节点的左子树+根节点的右子树接下来是二叉树的具体实现#pragma oncetypedef char DataType;typedef struct BNo...原创 2019-05-31 17:54:25 · 456 阅读 · 0 评论 -
树和二叉树的知识点总结
什么是树?树是一种非线性的结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。我们平常在生活中所看到的树是根在下,枝叶在上面。而对于数据结构中的树则是根朝上,枝叶朝下,正好与生活中的树的结构相反。树的特点每个结点有零个或多个子节点每一个非根结点有且只有一个父节点只有根节点没有父节点除了根结点外,每个子节点可以分为多个不相交的子树叶子节点点接下来我们从这个图来说...原创 2019-05-31 10:49:29 · 3273 阅读 · 5 评论 -
数据结构之链表
链表顺序表的增容需要malloc一段新空间,如果这个空间足够大,我们用不完这些空间势必就会造成空间的浪费。而且我们增容之后还要拷贝原空间的数据,释放旧空间,这样操作起来也比较麻烦。对于链表就恰恰能够解决这个问题。单链表1、逻辑上连续,位置上可以不连续的存储方式。2、单链表由无数个结点组成,每个结点都有数据段和指针域组成。其中数据段存储数据,指针域存储后继的地址。3、每个结点最多只能有一个...原创 2019-04-30 17:31:19 · 103 阅读 · 0 评论 -
数据结构之顺序表
顺序表顺序表是一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储,在数组上完成数据 的增删查改。顺序表又分为静态顺序表和动态顺序表1、使用静态顺序表存储typedef int DataType#define MAX_SIZE 100struct SeqList{ DataType array[MAX_SIZE];//用来存储顺序表中的元素 int size;...原创 2019-04-28 09:50:47 · 145 阅读 · 0 评论 -
时间复杂度和空间复杂度知识点总结
算法:为了解决一个问题,你来写一个解决这个问题的一个方法。也就是一个一系列的计算步骤,用来将输入数据转化为输出结果。那么怎么样才能知道你写的这个算法是好的还是坏的?时间复杂度和空间复杂度就是衡量一个算法好坏的标准。时间复杂度主要衡量的就是算法的运行速度,而空间复杂度主要衡量的就是一个算法所需要的一个额外空间。时间复杂度算法的时间复杂度是一个函数基本总的执行次数,也就是一个算法...原创 2019-04-26 15:14:25 · 377 阅读 · 0 评论