链表
class ListNode(object):
def __init__(self, data, p=None):
self.data = data
self.next = p
class Linklist(object):
def __init__(self):
self.head = None
def tailset(self): # 初始建立
print('input:')
data = input()
if data != "":
self.head = ListNode(int(data))
p = self.head
else:
print('over!')
return
while 1:
data = input()
if data != "":
p.next = ListNode(int(data))
p = p.next
else:
print('over!')
break
def headset(self): # 初始建立
print('input:')
data = input()
if data != "":
self.head = ListNode(int(data))
# p = self.head
else:
print('over!')
return
while 1:
data = input()
if data != "":
node = ListNode(int(data))
node.next = self.head
self.head = node
else:
print('over!')
break
@property
def show(self): # 遍历链表
print('链表元素如下:')
p = self.head
if p == None:
print('Empty!')
return
while p:
print(p.data, end=',')
p = p.next
else:
print('over!')
return
@property
def isempty(self): # 判断是否空
p = self.head
if p == None:
return True
else:
return False
@property
def length(self): # 获取长度
p = self.head
l = 0
while p:
l += 1
p = p.next
return l
def insert(self, data, pos): # 数据插入
if self.isempty and pos != 1:
raise Exception('wrong position!')
p = self.head
if pos == 1:
self.head = ListNode(data)
self.head.next = p
n = 2
while n < pos and p.next != None:
p = p.next
n += 1
if n == pos:
tmp = p.next # 先将插入位置之后的节点存起来
p.next = ListNode(data) # 插入节点
# p = p.next
# 存起来的节点放入链表
p.next.next = tmp
elif n < pos:
raise Exception('wrong position!')
def delete(self, pos): # 删除操作
p = self.head
# 假设位置信息有效
if pos == 1:
self.head = p.next
else:
for i in range(pos - 2):
p = p.next
p.next = p.next.next
def append(self, data):
"""
在链表的最后追加节点
"""
if self.isempty:
self.head = ListNode(data)
else:
p = self.head
while p.next:
p = p.next
else:
p.next = ListNode(data)
lk = Linklist()
lk.tailset()
# lk.insert(2,2)
# lk.delete(1)
lk.append(100)
lk.append(101)
lk.append(102)
lk.show