import sys
class employee():
def __init__(self):
self.name=''
self.no=0
self.sarly=0
self.next=None
def findnode(head,number):
ptr=head
while ptr!=None:
if ptr.no==number:
return ptr
ptr=ptr.next
return ptr
def addnode(ptr,head,new_name,new_no,new_sarly):
insert_node=employee()
if not insert_node:
return None
insert_node.name=new_name
insert_node.no=new_no
insert_node.sarly=new_sarly
insert_node.next=None
if ptr==None:#在开头插入
insert_node.next=head
return insert_node
else :
if ptr.next==None:#结尾
ptr.next=insert_node
else:#中间
insert_node.next=ptr.next
ptr.next = insert_node
return head
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.next=None
if not head:
sys.exit(1)
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.next = None
newnode.name=namedata[i]
newnode.no=data[i][0]
newnode.sarly=data[i][1]
newnode.next=None
ptr.next=newnode
ptr=ptr.next
position=0
while (True):
print('请输入要插入其后的员工编号,如输入的编号不在此链表中')
position=int(input('请输入的员工节点将视为此链表的链表头部,要结束插入过程,请输入-1'))
if position==-1:
break
else:
new_no=int(input('请输入新员工的编号'))
new_name=input('请输入新员工的名字')
new_sarly=int(input('请输入新员工的工资'))
ptr1=findnode(head,position)
addnode(ptr1,head,new_name,new_no,new_sarly)
ptr=head
while ptr!=None:
print('\t[%2d]\t[%-7s]\t[%3d]'%(ptr.no,ptr.name,ptr.sarly))
ptr=ptr.next
参考图解数据结构书