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实现单链表的主要内容,如果未能解决你的问题,请参考以下文章