数据结构习题集
以数据结构习题为主,熟悉数据结构与算法的应用
渔樵小猿
这个作者很懒,什么都没留下…
展开
-
判断回文链表(C语言实现)
【代码】判断回文链表(C语言实现)原创 2024-06-08 07:00:00 · 479 阅读 · 0 评论 -
对链表进行插入排序(C语言实现)
【代码】对链表进行插入排序(C语言实现)原创 2024-06-14 13:50:58 · 200 阅读 · 0 评论 -
随机链表的复制(C语言实现)
【代码】随机链表的复制。原创 2024-06-12 19:44:07 · 365 阅读 · 0 评论 -
另一棵树的子树(C语言)
【代码】另一棵树的子树(C语言)原创 2024-09-04 00:00:00 · 213 阅读 · 0 评论 -
数据结构——循环队列的设计
定义:循环队列属于队列的一种,具有队列的功能,可以在头尾进行插入和删除,因为可以改变头尾指针的位置,所以具有在任意节点操作的功能。1.循环队列允许元素在队尾插入,在队头删除,同时遵循先进先出的原则。2.笔者推荐使用数组实现循环队列,数组相比链表节约了找尾这一步骤,更加方便的快速访问,同时循环队列用数组实现可以不用移动数组内的元素。3.在大量添加和删除元素时,循环队列相比链表更有效率,因为它不需要频繁移动指针寻找元素。4.缺陷:不支持随机访问,不能像数组一样直接访问特定位置的元素。比如不能实现二分查找。原创 2024-06-29 16:26:14 · 1031 阅读 · 0 评论 -
二叉树的最大深度(C语言)
【代码】单值二叉树(C语言)原创 2024-09-02 19:32:05 · 199 阅读 · 1 评论 -
链表中的倒数第k个节点(C语言实现)
创造两个指针,把头节点赋值给两个指针。设置两个循环,第一个循环里是快指针先走(注意k可能会大于链表节点个数,因此需要写当快指针为空的情况),第二个循环是两个指针同时走,当快指针为空时循环结束。此题可以利用快慢指针,设置一个快指针和一个慢指针,让快指针先走k次,与满指针拉开k-1节点的距离,再让快指针和慢指针同时走,当快指针为空时,慢指针也会同时到达倒数第k个节点。原创 2024-05-31 07:00:00 · 351 阅读 · 0 评论 -
相交链表(C语言实现)
【代码】相交链表(C语言实现)原创 2024-06-07 22:50:17 · 117 阅读 · 0 评论 -
反转链表(C语言实现)
否则反转后会丢失下一个链表的地址。之后将变量向下一批迭代,原创 2024-05-29 12:09:48 · 226 阅读 · 0 评论 -
删除排序链表中的重复元素 II(C语言实现)
第三步,第一种情况下主逻辑为一个变量遍历到下一个不同的节点,另一个变量依次删除节点,第三个变量则链接链表。删除链表的重复元素可以使用对比的方法,前后两个元素进行对比,两个元素相同就进行删除,不同就继续遍历。第二步,第一种情况下为要删除的情况,需要删除,之后再链接;第二种为不同的情况,需要继续遍历寻找。第一步,分为两种情况,第一种为两个节点相同的情况,第二种时两个节点不同的情况。第四步,存在特殊情况,分为头删和尾删、全部删除,这三个需要注意野指针的问题。第五步,删除完成后返回链表头指针。原创 2024-06-16 22:34:58 · 214 阅读 · 0 评论 -
单值二叉树(C语言)
【代码】单值二叉树(C语言)原创 2024-09-03 09:00:00 · 133 阅读 · 0 评论 -
二叉树的前序遍历(C语言)
【代码】二叉树的前序遍历(C语言)原创 2024-09-02 12:00:00 · 196 阅读 · 0 评论 -
移除链表元素(C语言实现)
【代码】移除链表元素(C语言实现)原创 2024-05-30 07:00:00 · 295 阅读 · 0 评论 -
分割链表(C语言实现)
【代码】分割链表(C语言实现)原创 2024-06-07 16:25:31 · 163 阅读 · 0 评论 -
有效的括号(C语言实现)
【代码】有效的括号(C语言实现)原创 2024-06-24 22:28:21 · 145 阅读 · 0 评论 -
用栈实现队列(C语言实现)
【代码】用栈实现队列(C语言实现)原创 2024-06-27 13:31:29 · 199 阅读 · 0 评论 -
用队列实现栈(C语言实现)
【代码】用队列实现栈(C语言实现)原创 2024-06-26 17:48:52 · 358 阅读 · 0 评论 -
合并两个有序链表(C语言实现)
将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2024-06-02 14:33:39 · 386 阅读 · 0 评论 -
平衡二叉树(C语言)
这个方法容易想到,但是时间复杂度太高,为O(N*N),出现了重复计算,因此我们可以选择优化这个代码,将时间复杂度变为O(N)。平衡二叉树是指左右子树高度相差小于等于1的二叉树。原创 2024-09-05 20:32:53 · 201 阅读 · 0 评论