欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python单链表的基本操作

程序员文章站 2023-02-17 08:22:53
链表的基本操作"""初始化链表"""import timeclass Node: def __init__(self,value): self.value = value self.next = Noneclass SingleLinkList: def __init__(self): self.head = None def is_empty(self): """判断是否为空""" r...

单链表的基本操作

"""
初始化链表
"""
import time

class Node:
    def __init__(self,value):
        self.value = value
        self.next = None

class SingleLinkList:
    def __init__(self):
        self.head = None

    def is_empty(self):
        """判断是否为空"""
        return self.head == None

    def travel(self):
        """遍历链表"""
        cur = self.head
        while cur is not None:
            print(cur.value,end=" ")
            cur = cur.next

    def append(self,item):
        """在末尾添加节点"""

        node = Node(item)
        # 如果是空链表
        if self.is_empty():
            self.head = node
            return
        # 当不为空的时候
        cur = self.head
        while cur.next:
            cur = cur.next
        cur.next = node
        # node.next = None

    def insert(self,index,item):
        """插入中间节点"""
        if (self.head is None) and (self.head.next is None):
            return
        cur = self.head
        while cur is not None and index > 1:
            index = index - 1
            cur = cur.next
        node = Node(item)
        node.next = cur.next
        cur.next = node

    def add(self,item):
        """在头部添加节点"""
        node = Node(item)
        node.next = self.head
        self.head = node

    def length(self):
        """获取链表的长度"""
        cur = self.head
        count = 0
        while cur is not None:
            count += 1
            cur = cur.next
        return count

    def search(self,item):
        # 查看item在链表中是否存在
        cur = self.head
        while cur != None:
            if cur.value == item:
                return True
            else:
                cur = cur.next
        return False

    def pop_last(self):
        """弹出链表的最后一个元素"""
        if self.head is None:
            return
        cur = self.head
        if cur.next is None:
            self.head = None
            return
        while cur.next.next is not None:
            cur = cur.next
        cur.next = None

    def pop_head(self):
        """把链表的第一个元素弹出"""
        if self.head is None:
            return
        self.head = self.head.next

    def cycle(self):
        """循环输出链表"""
        cur = self.head
        if cur.next == None:
            cur.next = self.head
        while cur.next != None:
            self.travel()
            time.sleep(3)





if __name__ == '__main__':
    s = SingleLinkList()
    s.append(100)
    s.append(300)
    s.append(600)
    s.add(500)
    s.add(150)
    head = Node(30)
    head.next = Node(40)
    head.next.next = Node(50)
    s.pop_head()
    s.pop_last()
    s.cycle()
    s.travel()

本文地址:https://blog.csdn.net/weixin_46120601/article/details/107553124

相关标签: python