class Node:
def __init__(self, data):
self.data = data
self.next_ = None
# 头插法
class SingalNode:
def __init__(self):
self.head = None
def add(self, data):
node = Node(data)
node.next_ = self.head
self.head = node
return
def traveList(self):
current_node = self.head
while current_node:
print(current_node.data)
current_node = current_node.next_
def is_empty(self):
if self.head == None:
return False
else:
return True
def get_length(self):
num = 0
current_node = self.head
while current_node:
num += 1
current_node = current_node.next_
return num
def insert_node(self, data, index):
'''
链表插入数据函数
:param data:
:param index:
:return:
'''
link_len=self.get_length()
if isinstance(index, int):
if index < 0:
self.insert_node(data,0)
if index >link_len:
self.insert_node(data,link_len)
else:
node = Node(data)
current_node = self.head
cnt = 1
while current_node:
if index==0:
node.next_ = current_node
self.head=node
return
elif index==cnt:
node.next_=current_node.next_
current_node.next_=node
return
else:
# 移动游标
current_node = current_node.next_
# 计数器加1
cnt += 1
else:
print("pos位置无效, 请确认")
exit()
if __name__ == '__main__':
test = SingalNode()
# print(test.head)
#print(test.is_empty())
data_list = [1, 3, 5]
for i in data_list:
test.add(i)
#print(test.head)
test.traveList()
#print(test.is_empty())
#print(test.get_length())
print ('test')
test.insert_node(9,2)
test.traveList()