from typing import Optional class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solution: def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]: lessListPre = ListNode() # 小于链表的伪头节点 noLessListPre = ListNode() # 不小于链表的伪头节点 lessNode = lessListPre # 小于链表当前最后一个节点,初始为伪头节点 noLessNode = noLessListPre # 不小于链表当前最后一个节点,初始为伪头节点 while head: if head.val < x: # 当前节点值小于x,将当前节点追加到小于链表之后,更新小于链表当前最后一个节点 lessNode.next = head lessNode = lessNode.next else: # 当前节点值不小于x,将当前节点追加到不小于链表之后,更新不小于链表当前最后一个节点 noLessNode.next = head noLessNode = noLessNode.next head = head.next # 更新当前节点 noLessNode.next = None # 不小于链表的最后一个节点为新链表的尾节点,清空其next lessNode.next = noLessListPre.next # 不小于链表拼接到小于链表之后 return lessListPre.next # 返回新链表
# 定义节点 class Node(object): ''' 节点 ''' def __init__(self,elem): # 一个节点包含两部分 数据和地址 # 保存节点的数据 self.elem=elem # 保存节点的地址 self.next=None # node=Node(100) # node2=Node(400) # node3=Node(600) class SingleLinklist(object): '''串联起来各个单节点''' def __init__(self,node=None ): self._head=node #私有属性 def is_empty(self): '''判断是否为空''' pass def length(self): '''获取长度''' pass def travel(self): '''遍历整个链表''' pass def add(self,item): '''链表头部添加元素''' pass def append(self,item): '''链表尾部添加元素''' pass def insert(self,pos,item): '''指定位置添加元素''' pass def remove(self,item): '''删除元素''' pass def search(self,item): '''查找元素''' pass if __name__ == '__main__': # 实例化 单列表对象 single_obj=SingleLinklist() single_obj.is_empty()
标签:__,python,self,next,链表,节点,def From: https://www.cnblogs.com/haha1988/p/17760122.html