数据结构与算法例题(2)——链表

简介: 删除链表以及翻转列表

image-20221002202229933

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
        dummy=ListNode(-1,head)
        ans=dummy
        while dummy.next:
            if dummy.next.val!=val:
                dummy=dummy.next
            else:
                dummy.next=dummy.next.next
        return ans.next
#通过循环完成,当链表中的元素等于规定的值元素时,将该元素的next指针指向next.next也就是直接跳过这个元素,最后返回ans.next,相当于整个元素链表。

image-20221002213443086

# 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]:
        # 按照饲养员解法超出时间限制
        # dummy=ListNode(0)
        # dummy.next=head
        # while head is not None and head.next is not None:
        #     dnext=dummy.next
        #     hnext=head.next
        #     dummy.next=hnext
        #     head.next==hnext.next
        #     hnext.next=dnext
        # return dummy.next
        
        #参考解法 双指针解法
        pre=None
        cur=head
        while cur is not None:
            temp=cur.next
            cur.next=pre
            # 更新迭代
            pre=cur
            cur=temp
        return pre
相关文章
|
13天前
|
存储
数据结构第二课 -----线性表之单向链表
数据结构第二课 -----线性表之单向链表
|
4天前
|
存储 算法 Java
数据结构与算法 数组和链表
数据结构与算法 数组和链表
9 0
|
4天前
|
存储 Java
深入浅出数据结构之链表
深入浅出数据结构之链表
|
4天前
|
C++
数据结构(双链表
数据结构(双链表
7 1
|
7天前
|
存储 缓存
[数据结构]~双向+循环链表从(0~1)
[数据结构]~双向+循环链表从(0~1)
|
13天前
|
存储
数据结构第三课 -----线性表之双向链表
数据结构第三课 -----线性表之双向链表
|
14天前
|
存储 Java
数据结构奇妙旅程之顺序表和链表
数据结构奇妙旅程之顺序表和链表
|
18天前
|
存储 C语言
数据结构基础:双链表结构、实现
数据结构基础:双链表结构、实现
|
18天前
|
存储
数据结构基础:一篇文章教你单链表(头插,尾插,查找,头删等的解析和代码)
数据结构基础:一篇文章教你单链表(头插,尾插,查找,头删等的解析和代码)
|
21天前
|
C语言
数据结构:5、链表之双向链表
数据结构:5、链表之双向链表
25 0