数据结构
孙智荣
这个作者很懒,什么都没留下…
展开
-
图的存储
图的存储一共有四种方法: 1.邻接矩阵:这种方法简单易懂,但是容易造成内存的浪费。 最简单的存图方式,一般就是开辟一个二维数组,比如一共有n个点组成的图,就开个edge[n][n],edge[1][2] = 3,就表示点1到点2的权值为3,但是有一些到不了的点,比如4到达不了5,但是仍有edge[4][5]这个数据,我们可以把它初始化为一个标记数,代表无法到达。太简单,代码就不放了; 2.邻接表:改善了矩阵所带来的内存浪费问题,但是操作不便。 邻接表的处理办法是这样。 1) 图中顶...原创 2020-07-22 21:59:51 · 953 阅读 · 0 评论 -
红黑树
一.为什么要有红黑树这种数据结构? 首先,在二叉搜索树,极个别极端的数据会使二叉树退化成链表,所以出现了平衡二叉树(AVL树); ALV树:是一种严格按照定义来实现的平衡二叉查找树,所以它查找的效率非常稳定,为O(log n),由于其严格按照左右子树高度差不大于1的规则,插入和删除操作中需要大量且复杂的操作来保持ALV树的平衡(左旋和右旋),因此ALV树适用于大量查询,少量插入和删除的场景中。 所以说,如果有大量数据进行插入,则AVL树会耗费大量时间去进行旋转平衡操作,为了使整个二叉树更具备查找与插入原创 2020-07-20 20:18:55 · 169 阅读 · 0 评论 -
二叉树
树的概念 树(Tree)是n(n>=0)个结点的有限集合,在任何一颗非空树中: (1)有且仅有一个特定称为根(root)的结点; (2)当n>1时,其余节点可以分为m个互不相交的有限集T1,T2...Tm; 其中每个集合本身又是一个树,并且称为根的子树(subtree)。 树是一种递归的数据结构,树作为一种逻辑结构,同时也是一种分层结构,树的根结点没有前驱节点,而其他结点都有...原创 2020-05-08 11:22:27 · 278 阅读 · 0 评论 -
class类实现栈、队列
在c++中,STL里有stack和queue两个封装函数,一直不知道是怎么实现的,直到在网上看到了class类,然后自己写了一下特此记录 栈 class stack{ public: stack(); void pop(); void push(char c); char top(); void show(); bool empty(){ return _to...原创 2020-02-25 13:57:31 · 411 阅读 · 0 评论 -
数据结构之链表
链表 在介绍链表之前首先说一下数组,因为链表跟数组的功能类似,都是用来存储数据的,但是数组却要提前分配大小,如果太大,则造成了内存资源的浪费,而太小了又会造成数据的丢失,那有没有一种存储结构是按需分配,即输入多少数据就相应的分配多少空间来存储它们,链表便完全解决了这种数据跟空间不匹配的问题。 链表的概念 链表就是由一个或多个含有指针成员的结构体,通过其指针成员的地址指向,形成了一种逻辑上的链...原创 2020-02-21 12:03:10 · 446 阅读 · 0 评论