
数据结构
文章平均质量分 96
岸边露伴'
这个作者很懒,什么都没留下…
展开
-
【数据结构】八大经典排序
什么是排序:所谓排序,就是使一串记录按照其中的某个或某些关键字的大小,按递增或递减方式排列起来的操作。原创 2023-08-20 20:59:00 · 189 阅读 · 1 评论 -
【数据结构】二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成的一个具有层次关系的集合;它被称为树是因为其看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。原创 2023-08-20 19:43:54 · 100 阅读 · 2 评论 -
【数据结构】堆
堆的元素按完全二叉树的顺序存储方式存储在一维数组中,所以堆的结构和顺序表的结构一样。原创 2023-08-20 19:40:20 · 111 阅读 · 1 评论 -
【数据结构】栈和队列
栈可以用顺序表实现,也可以用链表实现,这里选用顺序表实现,原因如下:1、栈的插入和删除操作都在栈顶,即在数据的尾部进行,而顺序表在尾部插入和删除数据的效率为O(1),完美的避开了顺序表的缺陷;2、顺序表扩容和链表频繁 malloc 在整体上的效率是差不多的,只是顺序表会存在一定的空间浪费;3、顺序表支持随机访问,且其缓存利用率更高;综合考虑以上几种因素,我们采用顺序表实现栈原创 2023-08-10 21:59:24 · 79 阅读 · 1 评论 -
【数据结构】带头双向循环链表的增删查改
在上一节中我们学习了单链表,但是我们发现单链表有如下缺陷:1、在尾部插入、删除数据时间复杂度为O(N),效率低;2、在pos位置前插入、删除数据时间复杂度为O(N),效率低;3、进行插入、删除数据时因为有可能改变头节点,所以需要传递二级指针,不易理解;基于单链表的这些缺陷,我们设计出了带头双向循环链表,带头双向循环链表能够完美地解决顺序表所存在的所有缺陷。相比于单链表,双向链表需要增加一个结构体指针prev,用来存放前一个节点的地址。原创 2023-08-10 21:56:53 · 386 阅读 · 1 评论 -
【数据结构】单链表的增删查改
在上一节中我们提到了顺序表有如下缺陷:在头部/中间的插入与删除需要挪动数据,时间复杂度为O(N),效率低;增容需要申请新空间,可能会拷贝数据,释放旧空间,会有不小的时间消耗;增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到 200,如果我们再继续插入了5个数据,后面没有数据插入了,那么会浪费95个数据空间;基于顺序表的这些不足,我们设计出了链表。原创 2023-08-10 21:53:39 · 462 阅读 · 1 评论 -
【数据结构】顺序表的增删查改
线性表(linear list)是n个具有相同特性的数据元素的有限序列;线性表是一种在实际中广泛使用的数据结构,常见的线性表有:顺序表、链表、栈、队列、字符串…顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储,在数组上完成数据的增删查改。简单来说,顺序表就是数组,只是要求数组里面的元素必须连续存储而已原创 2023-08-10 21:51:24 · 127 阅读 · 1 评论