class Node(object):
def __init__(self,elem):
self.elem = elem
self.next = None
class SingleLinkList:
#初始化
def __init__(self,node=None):
if node != None:
self.__head = Node(node)
else:
self.__head = node
# 在单向链表头部追加
def add(self,item):
node = Node(item)
node.next = self.__head
self.__head = node
# 在单向链表尾部追加
def append(self,item):
if self.is_empty():
self.__head = Node(item)
else:
curNode = self.__head
while curNode.next != None:
curNode = curNode.next
curNode.next = Node(item)
# 在单向链表指定位置追加
def insert(self,pos,item):
if pos <= 0:
self.add(item)
elif pos > self.length()-1:
self.append(item)
else:
pre = Node(item)
curNode = self.__head
while pos>1:
curNode = curNode.next
pos = pos - 1
pre.next = curNode.next
curNode.next = pre
#删除节点
def remove(self,item):
curNode = self.__head
if curNode.elem == item:
self.__head = curNode.next
else:
while curNode.next.elem != item:
curNode = curNode.next
pre = curNode.next.next
curNode.next = pre
#查找链表是否存在item
def search(self,item):
curNode = self.__head
while curNode != None:
if curNode.elem == item:
return True
else:
curNode = curNode.next
return False
#判断链表是否为空
def is_empty(self):
return self.__head == None
#链表长度
def length(self):
count = 0
curNode = self.__head
while curNode != None:
count = count + 1
curNode = curNode.next
return count
#链表遍历
def travel(self):
curNode = self.__head
while curNode != None:
print(curNode.elem,end='\t')
curNode = curNode.next
print('\n')
if __name__ == '__main__':
singleLinkList = SingleLinkList()
print(singleLinkList.is_empty())
# singleLinkList.add(10)
# singleLinkList.append(60)
# singleLinkList.insert(2,40)
# singleLinkList.remove(60)
# singleLinkList.travel()
单向单链表
最新推荐文章于 2024-08-08 17:05:23 发布