首页 > 其他分享 >节点与链表

节点与链表

时间:2024-01-31 21:33:21浏览次数:18  
标签:node head .__ cur self next 链表 节点

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class SingleLinkList:
    def __init__(self,node=None):
        self.__head=node

    def is_empty(self):
        '''判断列表是否为空'''
        return self.__head==None

    def length(self):
        '''链表长度'''
        cur=self.__head
        count=0
        while cur!=None:
            count+=1
            cur=cur.next
        return count

    def travel(self):
        '''遍历链表'''
        cur=self.__head
        while cur!=None:
            print(cur.val,end=' ')
            cur=cur.next
        print(' ')

    def append(self,item):
        '''在链表尾部添加元素'''
        node=ListNode(item)
        if self.is_empty():
            self.__head=node
        else:
            cur=self.__head
            while cur.next!=None:
                cur=cur.next
            cur.next=node

    def add(self,item):
        '''在链表头部添加元素'''
        node=ListNode(item)
        node.next=self.__head
        self.__head=node
    def insert(self,pos,item):
        '''在指定位置添加元素
        :param pos 索引从0开始
        '''
        if pos<0:
            self.add(item)
        elif pos>=self.length():
            self.append(item)
        else:
            node=ListNode(item)
            pre=self.__head
            count=0
            while count<pos-1:
                pre=pre.next
                count+=1
            node.next=pre.next
            pre.next=node

    def search(self,item):
        '''查找元素
        若找到元素返回元素索引
        若找不到返回-1
        '''
        cur=self.__head
        count=0
        while cur!=None:
            count+=1
            if cur.val==item:
                return count-1
            else:
                cur=cur.next
        return -1

    def remove(self,item):
        '''删除制定元素病返回删除前元素的索引'''
        print(self.search(item))
        cur=self.__head
        pre=None
        while cur!=None:
            if cur.val==item:
                if pre==None:
                    self.__head=cur.next
                else:
                    pre.next=cur.next
                    cur.next=None

                break
            else:
                pre=cur
                cur=cur.next

 

标签:node,head,.__,cur,self,next,链表,节点
From: https://www.cnblogs.com/yyyjw/p/18000172

相关文章

  • 动力节点RabbitMQ教程|12小时学会rabbitmq消息中间件-02
    RabbitMQ集群cluster与高可用RabbitMQ的集群分两种模式,一种是默认集群模式,一种是镜像集群模式;在RabbitMQ集群中所有的节点(一个节点就是一个RabbitMQ的broker服务器)被归为两类:一类是磁盘节点,一类是内存节点;磁盘节点会把集群的所有信息(比如交换机、绑定、队列等信息)持久化......
  • 在K8S中,flannel能固定节点IP和Pod的IP地址吗?
    Flannel作为一个Kubernetes集群的网络插件,其设计目标之一是为Pod分配固定的IP地址,并确保不同节点上的PodIP地址不会冲突。具体来说:PodIP固定:Flannel在每个节点上预分配一个子网供Pod使用,当创建新Pod时,Flannel会从该节点的子网中分配一个唯一的IP地址给Pod,从而确保Pod在整个生......
  • 代码随想录算法训练营第三天 |203.移除链表元素 , 707.设计链表,206.反转链表
    206.反转链表 已解答简单 相关标签相关企业 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出:[] 提示:链......
  • 基于volcano实现节点真实负载感知调度
    本文分享自华为云社区《基于volcano实现节点真实负载感知调度》,作者:可以交个朋友。背景默认调度器调度器视某个节点的空闲可调度资源=节点可分配资源-SUM(节点上已调度Pod们的request),当某个Pod处于pending状态待调度时,默认调度器根据Pod中指定的request值和各个节点的空闲......
  • 86. 分隔链表(中)
    目录题目题解:链表拆分+拼接题目给你一个链表的头节点head和一个特定值x,请你对链表进行分隔,使得所有小于x的节点都出现在大于或等于x的节点之前。你应当保留两个分区中每个节点的初始相对位置。题解:链表拆分+拼接新建两个链表,一个链表放小于x的节点,一个链表......
  • 记一次MySQL从节点服务器宕机重启后,从节点出现主键冲突异常的处理
    环境MySQL5.7非GTID模式多线程复制。现象某MySQL数据库从节点因故障宕机(因故障直接宕机,非正常关闭),重启之后发现复制状态异常,showslave的结果中Slave_SQL_Running为No,错误代码为1062errorcode,从系统表performance_schema.replication_applier_status_by_worker以及errorl......
  • 如何修改Azure Kubernetes Services节点池VM Size
    如何修改AzureKubernetesServices节点池大小今天和大家聊聊AzureKubernetesServices(AKS)修改节点池VMSize的问题。这也是很多客户在使用AKS的过程中都会遇到的一个问题。随着AKS群集使用时间的增长,很多客户都会面临扩展或修改AKS节点池VMSize的问题,具体的原因大致如下:性能优化......
  • 61. 旋转链表(中)
    目录题目法一、k次头插法法二、快慢指针题目给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。法一、k次头插法把链表尾的元素取下来头插法放到链表头,k为几就循环几次classSolution:defrotateRight(self,head:Optional[ListNode],k:int)......
  • 使用Redis实现多节点任务调度
    1.目的目前中有部分功能需要定时更新或者推送数据,但正式环境存在多个server运行,会导致定时任务在多台服务器或者多个server同时运行。解决思路1:可以使用一台固定的服务器的一个节点单独部署定时任务的程序。解决思路2:多节点调度时,使用Redis锁来实现只有一个节点单独执行。结......
  • 160. 相交链表
    目录题目题解:双指针题目题解:双指针思路:计算两条链表的长度,找到长度差,让长的链表多走差的值,返回第一个相等的元素classSolution:defgetIntersectionNode(self,headA:ListNode,headB:ListNode)->Optional[ListNode]:count1,count2=0,0pa=head......