
c语言数据结构初级
文章平均质量分 69
数据结构初级
pearlthriving
这个作者很懒,什么都没留下…
展开
-
堆的介绍~
堆的逻辑结构是一棵完全二叉树堆的物理结构是一个数组通过下标父子节点关系:leftchild=parent*2+1。原创 2024-07-28 10:38:05 · 806 阅读 · 0 评论 -
实现顺序表的增删查改
线性表是具有相同特性的数据元素的有限序列。线性表是一种在实际运用中广泛运用的线性结构,如线性表,栈,队列,字符串等。顺序表的本质是数组,实现了对数组的封装,例如增删查改等功能。顺序表分为静态顺序表和动态顺序表:int arr[N];int size;//有效数据个数int* arr;//动态数组int size;//有效数据个数//空间大小但是目前这个结构体只能存储int类型的数据,所以我们给数据类型起一个别名,让其更好存储其他类型的数据。//动态数组int size;原创 2024-04-03 21:14:00 · 317 阅读 · 0 评论 -
了解单链表
我们设置两个指针src(源数据)和dst(目标数据)分别指向数组的第一个位置,如果src指向的数值是我们要删除的数据,那么src++,如果src要的数据不是我们要删除的数据,那么把src的数据赋值给dst,并让src++,dst++。=NULL),那么此时不满足。要找到尾结点,再把尾结点和新节点连接起来。我们让尾结点的下一节点不要指向NULL,而是指向newNode。思路一: 创建新的数组,遍历原数组,将不为val的值放到新数组当中。我们需要有一个定义链表的节点的结构,并且将它们连接在一起,就成了链表。原创 2024-04-10 21:39:13 · 463 阅读 · 3 评论 -
顺序表的应用之通讯录
学习了顺序表之后,我们也得知道它的实际用途吧!所以,我们今天来学习一下通讯录的实现。原创 2024-04-07 09:08:41 · 310 阅读 · 2 评论 -
单链表的应用
上篇博客中,我们学习了单链表,为了更加熟练掌握这一知识点,就让我们将单链表的应用操练起来吧!思路一:遍历原链表,将值为val的节点释放掉。思路一:遍历原链表,将原链表的节点头插。思路二:创建三个指针,完成链表的翻转思路一:直接返回node/2思路二:快慢指针,slow每次走一步,fast每次走两步存在重复代码,如何优化呢?我们可以定义一个头结点,也就是哨兵位。这个链表实际叫作带头链表。第一步 创建带环链表第二部 遍历带环链表思路一:在原链表上修改若pcur的节点小于x,往后走。原创 2024-04-12 20:16:26 · 524 阅读 · 0 评论 -
贪吃蛇项目实践!(下)
比较蛇指向的节点和食物指向的节点是否相同。原创 2024-04-26 11:03:45 · 329 阅读 · 1 评论 -
了解时间复杂度和空间复杂度
在学习数据结构前,我们需要了解时间复杂度和空间复杂度的概念,这能够帮助我们了解数据结构。算法效率分为时间效率和空间效率。原创 2024-04-26 17:02:54 · 629 阅读 · 3 评论 -
双向链表介绍
带头链表⾥的头节点,实际为“哨兵位”,哨兵位节点不存储任何有效元素,只是站在这⾥“放哨的”。哨兵位存在的意义:避免链表出现。双向链表的结构:数据+指向下一个节点的指针+指向前一个节点的指针。首先我们要申请一个新的节点,再改变指针的指向。双向链表为空,只有一个头结点。这个函数对空链表的情况也满足。LTInsert方法包含了头插。在pos位置之后插入数据。原创 2024-04-25 22:35:14 · 450 阅读 · 0 评论 -
贪吃蛇项目实践!(上)
大家好,今天我带着大家从0构建起贪吃蛇项目的高楼大厦~要实现这个游戏,我们需要实现哪些功能呢?实现基本的功能:• 贪吃蛇地图绘制• 蛇吃⻝物的功能(上、下、左、右⽅向键控制蛇的动作)• 蛇撞墙死亡• 蛇撞⾃⾝死亡• 计算得分• 蛇⾝加速、减速• 暂停游戏。原创 2024-04-26 09:54:44 · 1010 阅读 · 0 评论 -
二叉树(2)
二叉树的销毁分为三个部分的销毁:根节点,左子树和右子树层序遍历(上一层带下一层)队列里面的指针指向树的节点,把节点释放掉,不会影响到树的节点。判断二叉树是否为完全二叉树:1、层序遍历走,空也进队列2、遇到第一个空节点时,开始判断,后面全空就是完全二叉树,后面有非空就不是完全二叉树。不可能出现,遇到空时,后面还有非空没进队列。后面非空,一定是前面非空的孩子。当层序出到空的时候,前面非空都出完了,那他的孩子一定进队列了。那么这时候就不需要担心。原创 2024-07-02 17:17:46 · 427 阅读 · 0 评论 -
二叉树(1)
十分抱歉,停更了差不多一个月。暑假了,我又回来了!原创 2024-06-30 22:52:22 · 876 阅读 · 1 评论 -
栈和队列(1)
栈是一种特殊的线性表,只允许在一端进行插入和删除操作。如果不在缓存,就叫作不命中,要把数据从内存加载到缓存,再访问。第一步:左括号入栈,第二步:出栈顶的左括号判断和右括号是否匹配,如果匹配,继续,如果不匹配,终止。栈的实现可以用数组或者线性表实现,相对而言,数组实现更优,因为数组在尾上插入的代价较小。以上代码测试出如果是一样的,那么就是原地扩容,如果不一样,就是异地扩容。现在是个激动人心的时刻,因为我们来到了栈和队列的章节。出栈:栈的删除操作叫作出栈,出栈也在栈顶。异地扩容就是在新的地方开辟一个新的空间。原创 2024-05-15 16:15:33 · 415 阅读 · 1 评论 -
栈与队列(2)
head==tail是空还是满呢 方法一:额外多开一个空间。队列 如队列顺序1 出队列顺序1。栈 入栈顺序1 出栈顺序N。队列的作用是用来保持公平性。方法二:增加一个size。原创 2024-05-17 15:31:44 · 364 阅读 · 0 评论 -
排序(2)
那么当我们解决下面这个问题的时候:当开始时,begin=0,end=7,mini=begin=0,maxi=begin=0。i=1,1小于0,所以mini=1。此时最大值是9(begin),最小值是1(i)。当begin和max重合,就会出现4 3 5 6。原创 2024-07-07 17:22:53 · 454 阅读 · 2 评论 -
排序(1)
接下来,我们就来到了排序的章节,嘿嘿!加油!原创 2024-07-05 10:39:56 · 398 阅读 · 0 评论 -
链表带环问题
(慢指针有没有可能在环里走了好多圈呢,没有可能,如果走了好多圈,fast一定会超过slow。假设slow进环时,slow和fast之间的距离是N。假设slow进环的时候,fast跟slow的距离是N,fast追击slow距离变短。假设slow一次走一步,fast一次走三步,假设fast和slow之间的距离是N。若C-1是偶数,那么追得上,若C-1是奇数,那么又再一次追不上了,陷入死循环。2slow一次走1步,fast走3步,4步,5步可以吗?fast走的距离是x的三倍,3L=L+X*C+(C-N)。原创 2024-05-13 20:00:51 · 344 阅读 · 0 评论