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()