python实现单链表

Posted jiaxiaoxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python实现单链表相关的知识,希望对你有一定的参考价值。

class Chain():
    def __init__(self):
        self.first = None
        self.length = 0
    def is_empty(self):
        """是否为空"""
        return self.first == None
    def add(self, val):
        """头部添加"""
        node = Node(val)
        temp = self.first
        node.next = temp
        self.first = node
        self.length += 1
    def append(self, val):
        """尾部添加"""
        node = Node(val)
        if self.first:
            temp = self.first
            mid = None
            while temp:
                mid = temp
                temp = temp.next
            mid.next = node
        else:
            self.first = node
        self.length += 1
    def insert(self, item, val):
        """插入元素"""
        node = Node(val)
        temp, index = self.first, 0
        if item == 0:
            node.next, self.first = self.first, node
            self.length += 1
        else:
            while temp:
                if index+1 == item:
                    node.next, temp.next = temp.next, node
                    self.length += 1
                    break
                index += 1
                temp = temp.next
    def __len__(self):
        """链表长度"""
        return self.length
    @property
    def len_2(self):
        """链表长度(时间复杂度O(n))"""
        if not self.first:
            return 0
        else:
            temp = self.first
            length = 1
            while temp.next:
                length += 1
                temp = temp.next
            return length
    def pop(self):
        """删除尾部元素(有错误)"""
        temp = self.first
        mid = None
        while temp.next:
            mid, temp = temp, temp.next
        if mid:
            mid.next = None
            self.length -= 1
    def remove(self, item):
        """删除某一位置元素"""
        temp, index = self.first, 0
        if item == 0:
            if self.first:
                self.first = self.first.next
                self.length -= 1
        while temp:
            if index + 1 == item:
                temp.next = temp.next.next
                self.length -= 1
            index += 1
            temp = temp.next
    def bianli(self):
        """遍历链表"""
        temp = self.first
        while temp:
            print(temp.value)
            temp = temp.next
    def __iter__(self):
        pass
    def __next__(self):
        pass
class Node():
    def __init__(self, val):
        self.value = val
        self.next = None

 

以上是关于python实现单链表的主要内容,如果未能解决你的问题,请参考以下文章

单链表的反转 python实现实例

单链表的python实现

单链表-数据结构-python实现

python实现单链表的反转

python中的单链表实现

python中栈的单链表实现