一、 链表(Linked List)
链表,是线性表的链式存储结构。一个链表中有若干个结点,每个结点都包含数据域和地址域两部分。数据域用于存储元素,地址域用于存储前驱或后继的地址。
单链表: 每个结点只有一个地址域的线性链表;
双链表: 每个结点都有两个地址域,分别指向前驱结点和后继结点。
二、实战
做链表题有一个很重要的点,就是在一开始不熟悉的时候要勤动手!多画!把过程画出来!
206. 反转链表 给你单链表的头节点
head
,请你反转链表,并返回反转后的链表
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
提示:
- 链表中节点的数目范围是
[0, 5000]
-5000 <= Node.val <= 5000
进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
思路: 这道题目的思路比较简单,就是修改指针的指向。画图就能比较直观的看出来。
输入:1->2->3->4->5->NULL
输出:5->4->3->2->1->NULL
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: cur=head pre=None while cur: temp=cur.next # 保存一下 cur的下一个节点,因为接下来要改变cur->next cur.next=pre pre=cur cur=temp return pre
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。