import sys
class employee:
def __init__(self):
self.name=''
self.no=0
self.sarly=0
self.next=None
data=[[1001,32367],[1002,24338],[1003,27556],[1007,31299],\
[1012,42660],[1018,44145],[1018,44145],[1043,52182],\
[1031,32769],[1037,21100],[1041,32196],[1046,25776]]
namedata=['allen','scott','marry','john','mark','ricky',\
'lisa','jasica','hanson','amy','bob','jack']
head=employee()
head.name=namedata[0]
head.no=data[0][0]
head.sarly=data[0][1]
head.next=None
ptr=head
for i in range(1,12):
newnode=employee()
newnode.name=namedata[i]
newnode.sarly=data[i][1]
newnode.no=data[i][0]
newnode.next=None
ptr.next=newnode
ptr=ptr.next
ptr=head
while ptr!=None:#建立单向链表
print('\t[%2d]\t[%-7s]\t[%3d]' % (ptr.no, ptr.name, ptr.sarly))
ptr=ptr.next
def findnode(head,number,findyes):
ptr=head
if not ptr:
print('error')
exit(-1)
while ptr!=None:
if ptr.no==number:
findyes=findyes+1
return ptr
ptr=ptr.next
if findyes==0:
print("没有找到")
return 0
return ptr
def delnode(head,find_node):
ptr=head
if find_node.no==head.no:
head=head.next#删除头部
print("已删除第%d号员工,姓名:%s,薪资%d"%(find_node.no,find_node.name,find_node.sarly))
else:
while ptr.next!=find_node:
ptr=ptr.next#找前一个节点
if ptr.next!=None:
ptr.next=ptr.next.next
print("已删除第%d号员工,姓名:%s,薪资%d" % (find_node.no, find_node.name, find_node.sarly))
else:
ptr=None
print("已删除第%d号员工,姓名:%s,薪资%d" % (find_node.no, find_node.name, find_node.sarly))
return head
while(True):
number=int(input('输入需要删除的员工编号,输入-1则终止循环'))
if number==-1:
break
findyes=0
find_node=findnode(head,number,findyes)
head=delnode(head,find_node)
ptr=head
while ptr!=None:
print('\t[%2d]\t[%-7s]\t[%3d]' % (ptr.no, ptr.name, ptr.sarly))
ptr=ptr.next
参考图解数据结构书