数据结构应用分析
专门研究数据结构
monkey_wei
从学习java过渡到学习python,一如既往的菜,喜欢交友
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
B-树、B+树、B*树浅谈
B-树 B-树就是B树(可能有部分人会习惯上把B-树读为B减树,其实并不存在B减树,只是读法上的不同而已),B就是balanced,平衡的意思。B-树就是指的B树,特此说明一下。 先介绍一下二叉搜索树。 顾名思义,二叉搜索树,即指最多拥有两个叉,这里的叉即为所有非叶子结点的儿子(Lift和Right); 所有的结点存储一个关键字; 非叶子结点的左指针指向小于其关键字的结点,右指针指向对于其关键字的结点,结构如下图: 二叉搜索树的搜索,从根结点开始,如果查询的关键字与结点关键字相等,则该结点为查询的结点,如转载 2020-05-22 20:53:20 · 380 阅读 · 0 评论 -
单链表的应用实例
1、有一个带头结点的单链表L=(a1,b1,a2,b2,a3,b3…an,bn),设计一个算法将其拆分为两个带头结点的单链表L1和L2,其中L1=(a1,a2,a3,a4…an),L2=(bn,…b3,b2,b1),要求L1使用L的头节点。 解:利用原单链表L中的所有结点通过改变指针域重组成两个单链表L1和L2。由于L1中结点的相对顺序与L中的相同,所以采用尾插法建立单链表L1;由于L2中结点的相对顺序与L中的相反,所以采用头插法建立单链表L2。代码如下: void split(LinkNode * &am原创 2020-05-18 19:38:16 · 1409 阅读 · 0 评论 -
顺序表应用示例
1、假设一个线性表采用顺序表表示,设计一个算法,删除其中所有值等于x的元素,要求算法的时间复杂度为O(n),空间复杂度为O(1)。 解:这里提供两种解法: 解法一: 设删除L中所有值等于x元素后的顺序表为L1,显然L1包含在L中,为此L1重用L的空间。扫描顺序表L,重建L中只包含不等于x的元素,算法过程是置k=0(k用来记录新表中的元素个数),用i从左到右扫描L中所有的元素,当i指向的元素为x时跳过它;否则将其放置在k的位置,即 L->data[k]=L->data[i] , k++。 算法如下原创 2020-05-17 21:47:11 · 2604 阅读 · 2 评论
分享