![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构经典习题
收录数据结构的经典习题
核动力C++选手
优秀的猎手要耐心等待机会!
展开
-
随机链表的复制
给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的。深拷贝应该正好由n个节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。。原创 2023-11-10 09:12:47 · 111 阅读 · 1 评论 -
环形链表I和II
给你一个链表的头节点head,判断链表中是否有环。如果链表中存在环,则返回true。否则,返回false。原创 2023-11-09 14:52:09 · 92 阅读 · 1 评论 -
相交链表~
给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。图示两个链表在节点c1开始相交题目数据整个链式结构中不存在环。,函数返回结果后,链表必须。原创 2023-11-09 14:33:32 · 65 阅读 · 0 评论 -
链表的中间结点
具体来说就是定义两个指针,一快一慢,快指针一次走两步,慢指针一次走一步,当快指针走到末尾时,慢指针所指向的结点即为中间结点。因此,综合以上两种情况,当fast指向结点的val==NULL或者fast==NULL时,这时的slow即为所求中间结点。,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。原创 2023-11-02 16:36:10 · 76 阅读 · 0 评论 -
移除链表元素
这道题的思路是,设置prev和cur两个结构体指针,prev初始化为空,cur指向链表的第一个元素,接下来分两种情况讨论:1.如果cur->val == val,那么我们要把这个元素从链表中删除掉,并待删除的元素的前一个元素指向待删除的元素的后一个元素,以此删除元素;,在cur->val=val这种情况下,如果prev==NULL,这说明prev一直没动,那么就不能完成上述1中的操作(因为1中的操作需要对prev解引用),此时需要让head=next;=NULL,才可以完成上述1中的操作。原创 2023-11-02 16:17:21 · 54 阅读 · 0 评论