数据结构初阶
文章平均质量分 85
云边有个稻草人
必须有为成功付出代价的决心,然后想办法付出这个代价
展开
-
【数据结构初阶】深度理解 “栈” (附源码)
栈的概念与结构、初始化、销毁、入数据、取数据、获取栈中有效元素的个数、出栈原创 2024-08-03 09:23:43 · 1551 阅读 · 49 评论 -
【数据结构初阶】二叉树--堆(顺序结构实现)
新插入的数据作为子结点(child),找到新插入数据的父结点(parent=(child-1)/ 2)(上面二叉树的性质),父结点和子结点进行比较,若父结点大于子结点,数据交换,不大于则不交换。如果有一个关键码的集合K={k1,k2,,k3,...,k(n-1)},把它的所有元素按完全二叉树的顺序存储方式存储,在一个一维数组中,并满足:Ki = K(2*i+1) 且 Ki >= K(2*i+2)),i = 0,1,2...,则称为小堆(或大堆)。大堆:父结点不小于孩子结点。原创 2024-09-01 20:23:30 · 1981 阅读 · 67 评论 -
【数据结构初阶】二叉树--基本概念
对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统模拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。通俗点来讲,假设二叉树层次为k,除了第k层之外,每层结点的个数都达到了最大结点数,第k层结点个数不一定达到最大结点数,完全二叉树结点的顺序是从左到右的。一个结点含有的子树的根结点称为该结点的子结点,;原创 2024-08-19 17:30:04 · 3093 阅读 · 105 评论 -
【数据结构初阶】队列经典习题两道
用队列实现栈,用栈实现队列原创 2024-08-14 20:55:06 · 710 阅读 · 40 评论 -
【数据结构初阶】千字文章带你征服 “ 双向链表 ”(附源码)
初始化,尾插,头插,尾删,头删,删除指定位置的结点,删除pos结点之后的结点,销毁,查找,打印,顺序表和链表的比较原创 2024-07-31 17:33:28 · 1376 阅读 · 57 评论 -
【数据结构初阶】单链表经典算法题十道(详解+图例)—得道飞升(终篇)
环形链表(图解)、随机链表的复制(图解)原创 2024-07-29 00:21:18 · 793 阅读 · 46 评论 -
【数据结构初阶】单链表经典算法题十道(详解+图例)—得道飞升(中篇)
创建新数组,遍历原链表,将链表中的值放到数组中,然后在数组中判断是否为回文结构。在链表中不可回找,但是数组可以回找,所以我们可以把链表中的数据放到数组中。3)从原链表的头结点和新链表的头结点开始遍历比较。1)找原链表的中间结点,“快慢指针”;2)将中间结点及之后的结点进行反转;原创 2024-07-28 09:54:27 · 632 阅读 · 35 评论 -
【数据结构初阶】复杂度
算法效率、时间复杂度、空间复杂度、常见举例、常见复杂度对比原创 2024-07-17 13:04:52 · 1215 阅读 · 15 评论 -
【数据结构初阶】顺序表
线性表、顺序表、静态顺序表、动态顺序表原创 2024-07-18 00:37:08 · 1631 阅读 · 20 评论 -
【数据结构初阶】顺序表三道经典算法题(详解+图例)
通过把 src 指向的不等于 val 的数赋给 dst 指向的位置,实现把不等于 val 的数放到前面,而且刚好 dst 的值就是数组中不等于 val 的数据的个数,同时要注意循环的条件。通过 src 遍历数组,如果与 dst 指向的数据相等就跳过,不相等就先 dst++,再赋给 dst 指向的位置,限制条件 src原创 2024-07-20 15:27:29 · 855 阅读 · 39 评论 -
【数据结构初阶】一篇文章带你超深度理解【单链表】
前面我们学习了顺序表,实现了对数组内容增删查改等操作,但是顺序表仍然存在一些缺陷。中间/头部的插入删除,时间复杂度为O(N);增容需要申请新空间,拷贝数据,释放旧空间,这是不小的消耗;增容一般是成2倍的增长,大概率会有一些空间的浪费。那我们该如何解决上面的问题呢?下面我们来学习一下链表。1、链表的概念和结构链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现。2、链表(Single List,简写SList)的实现。原创 2024-07-24 20:57:53 · 1770 阅读 · 48 评论 -
【数据结构初阶】单链表经典算法题十道(详解+图例)—得道飞升(上篇)
创建一个新链表,newhead,newtail 指向新链表的头结点,定义两个指针分别指向原链表的头结点,两个指针指向的数据比较大小,谁小谁尾插到新链表里面。在实例中,最后一个5结点被尾插到新链表中时,5结点的next指针指向的仍然是后面的6结点,所以最后返回的时候结果里面含有6,所以我们把最后一个等于val结点的next指针指向NULL即可!慢指针每次走一步,快指针每次走两步,当快指针走到链表的尾结点时,假设链表的长度为n,快指针走的路程是慢指针的两倍,2*慢=快,即慢指针走的路程是n/2。原创 2024-07-26 00:34:47 · 1538 阅读 · 41 评论