今天用Python写单链表的代码
class SLinkNode:
def __init__(self, data=None, next=None):
self.data = data
self.next = next
class SLink:
def __init__(self):
self.head = SLinkNode() # 头结点
self.size = 0
def is_empty(self):
return self.head.next is None
def length(self):
return self.size
def insert(self, index, data):
if index > self.size or index < 0:
return False
node = self.head
for i in range(1, index+1):
node = node.next
node.next = SLinkNode(data, node.next)
self.size += 1
return True
def delete(self, index):
if index >= self.size or index < 0:
return False
node = self.head
for i in range(1, index+1):
node = node.next
del node.next
node.next = None
return True
def remove(self, data):
pre = self.head
node = pre.next
while node is not None:
if node.data == data:
pre.next = node.next
del node
self.size -= 1
return True
pre = node
node = node.next
return False
def travel(self):
node = self.head.next
while node is not None:
print(node.data, end=' ')
node = node.next
if __name__ == '__main__':
head = SLink()
print(head.is_empty())
print(head.length())
for i in range(0, 10):
head.insert(i, i+1)
print(head.is_empty())
print(head.length())
head.travel()
print()
print(head.delete(10))
head.delete(9)
head.travel()
print()
head.remove(3)
head.travel()
下面是测试结果
目的是在为了复习之前学的Python和数据结构