class Node:
def __init__(self, value):
self.val = value
self.next = None
class Chain(object):
def __init__(self, head=None):
self.head = head
if head:
self.length = 1
else:
self.length = 0
def print_chain(self):
if not self.head:
print('empty chain')
return
print('-----')
node = self.head
while node:
print(node.val)
node = node.next
print('-----')
def append_node(self, val):
item = None
if isinstance(val, Node):
item = val
else: item = Node(val)
if not self.head:
self.head = item
else:
node = self.head
while node.next:
node = node.next
node.next = item
self.length += 1
def delete_node(self, index):
if index < 0:
print('invalid index')
return
if index >= self.length:
if self.length == 0: print('empty chain')
else: print('out of index')
return
node = self.head
pre = self.head
while node.next and index:
pre = node
node = node.next
index -= 1
pre.next = node.next
self.length -= 1
def insert_node(self, index, val):
if index < 0:
print('invalid index')
return
if index >= self.length:
print('out of index, append node')
self.append_node(val)
return
item = None
if isinstance(val, Node):
item = val
else: item = Node(val)
node = self.head
pre = self.head
if index == 0:
item.next = node
self.head = item
else:
while node.next and index:
pre = node
node = node.next
index -= 1
pre.next, item.next = item, node
self.length += 1
def main():
NodeList = Chain()
nodes = [1,2,3,4,5]
for num in nodes:
NodeList.append_node(num)
NodeList.print_chain()
print(NodeList.length)
NodeList.delete_node(3)
NodeList.print_chain()
NodeList.insert_node(0, 1)
NodeList.print_chain()
if __name__ == '__main__':
main()
python实现单链表
最新推荐文章于 2023-05-27 23:09:26 发布