数据结构
文章平均质量分 59
真好,好的不得了
这个作者很懒,什么都没留下…
展开
-
对链表进行插入排序(C语言)
现有一无序链表: 要求在空间复杂度为O(1)上给该链表排序。 思路: 借助初学链表时的头插和前插来解决。 如果值为1的结点比5的节点小,则需要移动值为1的结点(插入到5的前面)因为5是头结点,所以可以头插。 这样做每次都需要从头结点遍历一遍(包括自身)然后再排序,就很麻烦。 所以:可以将链表分成两个链表,链表A、链表B,将头结点分割给链表A,将剩下的结点分给链表B。 将链表B中的结点,依次遍历,每次遍历在链表A中插入一个结点。 步骤一: 拿取链表splitedList中的首元结点与链表sortedLis原创 2021-06-15 15:31:16 · 1893 阅读 · 0 评论 -
基于C语言,合并两个有序链表(无头结点单链表)
前两天看看视频学会了这道题的解法,但今天做又给忘了!好痛苦~~~ 希望看到这篇文章的小伙伴也能通过这篇文章回忆到点什么! 好了,废话不多说,进入正题。 合并两个链表: ------ 链表a:3 -> 4 -> 5 -------链表b:1 -> 1 -> 2 -> 3 今天不加思考的思路: ----想着为了节省内存空间,将合并的内容全都放到链表a中。先定义一个头结点,然后将头结点指向首元结点,再比较a1和b1(链表a的第一个元素简称“a1”,链表b也是,下文不做解释),如果b1原创 2021-06-09 19:10:03 · 1390 阅读 · 0 评论 -
复制带随机指针的链表
解题思路: 为什么不能直接复制一个新链表:因为结点的指针域中不仅有直接后继,还有一个随机指针。直接的挨个复制一个新链表会导致新链表的结点中的随机指针指向原链表中的元素。 如何将对应关系一并复制:在每个结点的后方克隆一个结点,然后将克隆的所有结点从新组链接成链表。随机指针通过原链表的随机指针的值指向其下一个元素即可表达。 图示: 值为1的结点中随机指针指向值为4的结点。 相应克隆的结点a中随机指针也应该指向d的结点。 如此就可以通过在指针后克隆一个结点,通过原链表的对应关系来获得新链表之原创 2021-06-03 23:48:21 · 387 阅读 · 3 评论 -
找出数组中只出现一次、两次的数
一:找出数组中出现一次的数。 思路: 利用双目运算中的“按位异或”,求出数组中出现一次的数。 为什么“异或”可以求出数组中出现一次的数? 相信第一次听到这个方法的小伙伴和我一样惊讶?卧槽,还有这操作? 让我们先了解下异或的性质:两个一位数相异或,两数不同返回1,相同返回0,也就是 0^1 = 1;1 ^ 1 = 0; 0 ^ 0 = 0; 所有有下面的交换律: A ^ B = C; C ^ A = B; C ^ B = A; 画图举个例子: 也就是说,5 和 5 异或一下,得出的结果为0; 由此就可以原创 2021-05-24 16:31:08 · 965 阅读 · 0 评论