您现在的位置是:课程教程文章

python链表的乘法问题

2023-12-13 23:48课程教程文章 人已围观

说明

1、左乘法约定为数乘,即乘以整数n,链表的长度增加n倍。

尝试非数乘的情况:即当两个链表相乘时,用它们的数据域对应相乘的各个节点的值。

2、右乘法也要重载,否则右乘number*Node会报错,加一行:__rmul__=__mul__。

实例

def__mul__(self,other):
iftype(other)isNode:
n1,n2=self.values,other.values
product=[p[0]*p[1]forpinzip(n1,n2)]
returnNode.build(product)
ifother<0ortype(other)isnotint:
raiseTypeError("otherisanon-negetiveInteger")
ifother==0:returnNode()
ret=self.copy()
for_inrange(1,other):
self+=ret
returnself

__rmul__=__mul__


'''
>>>a=Node()+range(1,3)
>>>a*0
Node(None->None)
>>>a*1
Node(1->2->None)
>>>a*2
Node(1->2->1->2->None)
>>>a*5
Node(1->2->1->2->1->2->1->2->1->2->None)
>>>
>>>3*a
Node(1->2->1->2->1->2->None)
>>>a
Node(1->2->None)
>>>a*=5
>>>a
Node(1->2->1->2->1->2->1->2->1->2->None)
>>>
>>>
>>>a=Node()+range(1,8)
>>>b=Node(2)*7
>>>a*b
Node(2->4->6->8->10->12->14->None)
>>>b*a
Node(2->4->6->8->10->12->14->None)
>>>
'''

以上就是python链表的乘法问题,希望对大家有所帮助。更多Python学习指路:python基础教程

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

课程教程:python链表的乘法问题

上一篇:python链表实现左移和右移

下一篇:没有了

站点信息

  • 文章统计篇文章