class Node:
def __init__(self, init_data):
self.__data = init_data
self.__next = None
def get_data(self):
return self.__data
def get_next(self):
return self.__next
def set_data(self, new_data):
self.__data = new_data
def set_next(self, new_next):
self.__next = new_next
# my_list = MyList()
class MyList:
def __init__(self):
self.head = None
def is_empty(self):
return self.head is None
def add(self, item):
temp = Node(item)
temp.set_next(self.head)
self.head = temp
def size(self):
current = self.head
count = 0
while current is not None:
count += 1
current = current.get_next()
return count
def display(self):
current = self.head
while current is not None:
print("data:%s, id:%d" % (current.get_data(), id(current.get_next())))
current = current.get_next()
def search(self, item):
"""
判断链表中是否存在item元素,如果存在返回True,否则返回False
"""
current = self.head
found = False
while (current is not None) and (not found):
if current.get_data() == item:
found = True
else:
current = current.get_next()
return found
def remove(self, item):
current = self.head
previous = None
found = False
while found is False:
if current.get_data() == item:
found = True
else:
previous = current
current = current.get_next()
if previous is None:
# 第一个节点是要删除的结点,现在是head指向的
self.head = current.get_next()
# 手动清除当前内存
del current
else:
previous.set_next(current.get_next())
del current