
数据结构OJ
文章平均质量分 88
ChoSeitaku
是一名在校大学生,目前在做C语言、C++、蓝桥杯、算法、考研数学、408的内容,后期会做深度学习、机器学习、神经网络、人工智能、AIGC、WEB3、开发相关的内容
展开
-
二叉树相关|单值二叉树|相同的树|对称二叉树|前序遍历|中序遍历|后序遍历|另一棵树的子树|二叉树遍历(C)
判断一棵树节点的值是不是都相等用分治的思想解决如果当前子树根等于左子树的根,等于右子树的根,可以认为这三个节点的值相等如果当前三个节点没问题,就递归遍历左子树,如果还相等,可以得出5个节点都是相等的如果递归到空树,就返回是前序判断的时候,先判断自己,再判断左右拆解子问题把树分成三个部分拆解子问题判断树的两个子树是否相等前序遍历二叉树,把前序遍历的结果存到一个数组里面。原创 2024-11-01 16:33:23 · 1050 阅读 · 0 评论 -
栈和队列相关|有效的括号|用队列实现栈|用栈实现队列|设计循环队列(C)
判断左右括号是否匹配,匹配返回true,不匹配返回false通过栈来实现,类型和顺序,数量都要匹配控制数量通过size每个右括号都要找最近的左括号去判断类型匹配不匹配,顺序匹配不匹配最后来判断数量匹配不匹配。原创 2024-10-30 22:41:37 · 371 阅读 · 0 评论 -
链表分割|链表的回文结构|相交链表|环形链表|随机链表的复制(C)
x=3小于3的尾插到第一条链表,大于等于3的尾插到第二条链表,最后把两个链表连接起来带哨兵位头节点会更简单,不用考虑哪个链表为空的情况直接让ltail的next指向ghead的next也是ltail的next指向ghead的next所以还需要将gtail的next置空free哨兵位之前需要将头节点保存下来通过快慢指针,找到链表的中间位置,将链表的后半部分逆置,然后两个指针一个从头,另一个从中间开始,挨个比较虽然后半部分逆置了,但是2的next还是存的3的地址2可以不置空。原创 2024-10-29 11:12:18 · 839 阅读 · 0 评论 -
链表|反转链表|移除链表元素|链表的中间节点|返回倒数第k个节点|合并两个有序链表(C)
用两个指针p1指向空,p2指向第一个节点p2的next指向p1,把方向调过来因为p2的next指向p1,会丢掉后面的节点,所以需要三个节点前两个指针是为了反转,后一个指针是为了找到下一个节点p2给给p1,p3给给p2,p3指向下一个p2指向NULL,循环结束最后p1指向的就是链表的头删除所有值等于val的节点通过cur指针遍历链表中的节点,遍历的过程中,用prev指针记录cur的前一个节点将prev的next指向cur的next,再删除cur再把cur往后挪。原创 2024-10-27 09:45:09 · 582 阅读 · 0 评论 -
顺序表|消失的数字|轮转数组|移除元素|合并有序数组|删除有序数组中重复项(C)
如果src位置的值不等于dst,先++dst,再把src的值赋给dst,最后让src++开一个额外的数组,把原数组的后k个拷贝到临时数组的前面,前面剩余的拷贝到后面。src和dst一起走,还没有遇到val,src赋给dst就是自己赋给自己。0+N等差数列公式计算结果 - 数组中的值,结果就是消失的数字。dst遇到val,停下来,src继续走,src和dst拉开距离。如果src位置的值等于dst,就src++,相当于删除重复的值。把前n-k个逆置,把后k个逆置,再整体逆置。依次比较,取小的,尾插到新数组。原创 2024-10-13 14:54:37 · 693 阅读 · 0 评论