python 链表

发布时间 2023-10-12 17:43:29作者: 无知者无畏123
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()