python单向链表删除节点_在单向链表中删除节点

https://pan.baidu.com/s/1A3F5KQ59d6yHFXaXOo3yUg​pan.baidu.com

import sys

class employee():

def _init_(self):

self.num=0

self.salary=0

self.name=''

self.next=None

def del_ptr(head,ptr):

top=head

if ptr.num==head.num:

head=head.num

print('已删除第 %d 号员工 姓名:%s 薪资:%d'%(ptr.num,ptr.name,

ptr.salary))

else:

while top.next!=ptr:

if ptr.next==None:

top.next=None

print('已删除第 %d 号员工 姓名:%s 薪资:%d'%(ptr.num,ptr.name,

ptr.salary))

else:

print('已删除第 %d 号员工 姓名:%s 薪资:%d'%(ptr.num,ptr.name,

ptr.salary))

return head

def main():

findword=0

data=[[1001,32367],[1002,24388],[1003,27556],[1007,31299],\

[1012,42660],[1014,25676],[1018,44145],[1043,52187],\

[1031,32768],[1037,21110],[1041,32563],[1046,25766]]

namedata=['Allen','SCott','Marry','John','Mark','Ricky',\

'Lisa','Jasica','Hanson','Amy','Bob','Jack']

print('员工编号 薪水 员工编号 薪水 员工编号 薪水 员工编号 薪水')

print('----------------------------------------------------')

for i in range(3):

for j in range(4):

print('[%4d] $%5d' %(data[j*3+i][0],data[j*3+i][1]),end='')

print()

head=employee()#建立链表头部

if not head:

print('Error!!内存分配失败!\n')

sys.exit(0)

head.num=data[0][0]

head.name=namedata[0]

head.salary=data[0][1]

head.next=None

ptr=head

for i in range(1,12):#建立链表

newnode=employee()

newnode.num=data[i][0]

newnode.name=namedata[i]

newnode.salary=data[i][1]

newnode.next=None

ptr.next=newnode

while(True):

findword=int(input('请输入要删除的员工编号。要结束删除过程,请输入-1:'))

if(findword==-1):

break

else:

ptr=head

find=0

while ptr!=None:

if ptr.num==findword:

ptr=del_ptr(head,ptr)

find=find+1

head=ptr

if find==0:

print('#######没有找到######')

ptr=head

print('\t员工编号 姓名\t 薪水')

print('\t==========================')

while(ptr!=None):

print('\t[%2d]\t[%-10s]\t[%3d]'%(ptr.num,ptr.name,ptr.salary))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值