class Node(object):
'''定义一个节点类'''
def __init__(self, elem):
self.val = elem
self.next = None
class SingleLinkList(object):
'''定义一个单链表'''
def __init__(self, node = None):
self.head = node
def is_empty(self):
'''判断链表是否为空'''
return self.head == None
def length(self):
'''返回链表长度'''
cur = self.head
count = 0
while cur:
count += 1
cur = cur.next
return count
def travel(self):
'''遍历链表'''
cur = self.head
while cur:
print(cur.val, end = ' ')
cur = cur.next
print('\n')
def add(self, item):
'''在链表头添加元素'''
node = Node(item)
node.next = self.head
self.head = node
def append(self, item):
'''在链表尾添加元素'''
node = Node(item)
if not self.head:
self.head = node
else:
cur = self.head
while cur.next:
cur = cur.next
cur.next = node
def insert(self, pos, item):
'''在指定位置pos插入元素'''
node = Node(item)
if pos <= 0:
self.add(item)
elif pos > self.length() - 1:
self.append(item)
else:
cur = self.head
count = 0
while count < pos - 1:
cur = cur.next
count += 1
node.next = cur.next
cur.next = node
def remove(self, item):
'''删除节点'''
cur = self.head
if cur.val == item:
self.head = cur.next
else:
while cur.next:
if cur.next.val == item:
cur.next = cur.next.next
break
else:
cur = cur.next
def search(self, item):
'''查找节点是否存在'''
cur = self.head
while cur:
if cur.val == item:
return True
else:
cur = cur.next
return False
if __name__ == '__main__':
node = Node(7)
L = SingleLinkList()
print(L.is_empty())
print(L.length())
L.append(3)
L.add(999)
L.insert(-3, 110)
L.insert(99, 111)
print(L.is_empty())
print(L.length())
L.travel()
L.remove(111)
L.travel()
print(L.search(999))