链表
文章平均质量分 69
SNAKEpc12138
这个作者很懒,什么都没留下…
展开
-
链表第五天:环形链表
leetcode第142题.环形链表II题意:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。「说明」:不允许修改给定的链表。思路主要思路:判断链表是否环如果有环,如何找到这个环的入口判断链表是否有环可以使用快慢指针法, 分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针转载 2021-04-03 09:46:58 · 54 阅读 · 0 评论 -
链表第四天:反转链表
leetcode第206题:反转链表题意:反转一个单链表。示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路如果再定义一个新的链表,实现链表元素的反转,其实这是对内存空间的浪费。其实只需要改变链表的next指针的指向,直接将链表反转 ,而不用重新定义一个新的链表。使用双指针,慢指针指向当前节点,快指针指向下一个节点,然后改变一下快指针指向节点的next指向即可。代码双指针法c转载 2021-03-30 09:31:47 · 81 阅读 · 0 评论 -
链表第三天:设计链表
leetcode第707题:设计链表题意:在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表转载 2021-03-29 15:48:22 · 99 阅读 · 0 评论 -
链表第二天:虚拟头节点
leetcode第203题:移除链表元素题意:删除链表中等于给定值 val 的所有节点。思路这里以链表 1 4 2 4 来举例,移除元素4。如果使用C,C++编程语言的话,不要忘了还要从内存中删除这两个移除的节点, 清理节点内存之后如图:无论使用哪种语言,都应该注意对内存的管理。这种情况下的移除操作,就是让节点next指针直接指向下下一个节点就可以了,那么因为单链表的特殊性,只能指向下一个节点,刚刚删除的是链表的中第二个,和第四个节点,那么如果删除的是头结点又该怎么办呢?这里就涉及如转载 2021-03-28 10:22:57 · 427 阅读 · 0 评论 -
链表第一天:认识链表
链表什么是链表,链表是一种通过指针串联在一起的线性的数据结构。每个节点由两部分组成:数据域和指针域。数据域存放节点数据,指针域存放指向下一个节点的指针,最后一个节点的指针域指向NULL。链表的类型单链表链接的入口点称为列表的头结点也就是head。如图:双链表单链表中的节点只能指向节点的下一个节点。双链表:每一个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。双链表 既可以向前查询也可以向后查询。如图所示:循环链表循环链表,顾名思义,就是链表首尾相连。循环链表可以用来转载 2021-03-27 10:41:06 · 201 阅读 · 0 评论