问题
用python实现一个单链表
解决方案
# -*-coding:utf-8-*-
class Node(object):
"""
结点
"""
def __init__(self, ele=None, next=None):
self.ele = ele # 数据域
self.next = next # 指针域
class SingleList(object):
"""
单向链表
"""
def __init__(self, node=None):
self.__head = node
def length(self):
"""
链表长度
"""
cur = self.__head
count = 0
while cur != None:
cur = cur.next
count += 1
return count
def is_empty(self):
"""
链表是否位空
"""
return self.__head == None
def travel(self):
cur = self.__head
while cur != None:
print(cur.ele, end=" ")
cur = cur.next
print("")
def add(self, item):
node = Node(item)
node.next = self.__head
self.__head = node
def append(self, item):
node = Node(item)
if self.is_empty():
self.__head = node
else:
cur = self.__head
while cur.next != None:
cur = cur.next
cur.next = node
def remove(self, item):
cur = self.__head
pre = None
while cur != None:
if cur.ele == item:
if cur == self.__head:
self.__head = cur.next
else:
pre.next = cur.next
break
else:
pre = cur
cur = cur.next
def search(self, item):
cur = self.__head
while cur != None:
if cur.ele == item:
return True
else:
cur = cur.next
return False
def insert(self, pos, item):
if pos <= 0:
self.add(item)
elif pos > self.length() - 1:
self.append(item)
else:
pre = self.__head
count = 0
while count < pos-1:
pre = pre.next
count += 1
node = Node(item)
node.next = pre.next
pre.next = node
if __name__ == '__main__':
li = SingleList()
print(li.is_empty())
li.append(1)
li.append(2)
li.add(3)
li.add(10)
li.insert(0, 11)
li.insert(1, 12)
li.remove(12)
print(li.is_empty())
print(li.length())
li.travel()
print(li.search(999))
print(li.search(11))