【发布时间】:2019-02-27 01:13:26
【问题描述】:
我目前正在尝试创建一个递归的两个链表函数,它同时返回链表值的单个值。
例如,有两个链表:ll1 -> a, b, c 和 ll2 -> d, e, f
它将递归地返回a、d、b、e、f,(下面有我正在尝试做的代码段,这将更有意义!)
class LinkedList:
created = 0
def __init__(self,value,next=None):
self.value = value
self.next = next
LinkedList.created += 1
def convert_linked_list(l):
if l == []:
return None
front = rear = LinkedList(l[0])
for v in l[1:]:
rear.next = LinkedList(v)
rear = rear.next
return front
def convert_linked_str(ll):
answer = ''
while ll != None:
answer += str(ll.value)+'->'
ll = ll.next
return answer + 'None'
这是我写的递归链表函数。
def recursive_lls(ll1: LinkedList, ll2: LinkedList) -> LinkedList:
if ll1 == None or ll2 == None:
return None
else:
alternate = LinkedList(ll1.value, recursive_lls(ll1.next, ll2.next))
return alternate
ll1 = convert_linked_list(['n',3 ,'z','d'])
ll2 = convert_linked_list(['w','x',7 ,'g','e',1])
print(convert_linked_str(recursive_lls(ll1,ll2)))
它会给我一个结果:
n->3->z->d->None
但是想要的结果是:
n->w->3->x->z->7->d->g->e->1->None
- 结果始终以 ll1 头值开头
- ll1 和 ll2 可以是不均匀的长度,如果 ll2 值用完,那么 ll1 会继续(可以是其他方式)
用我目前拥有的方法来处理这个递归函数的最佳方法是什么?我知道使用类而不是辅助函数会更容易。
- 必须是递归的,不能循环
- 没有花哨的进口(拉链等)
还有如果它的single递归链表函数,这就是我在下面写的。但是对于两个链表,我真的很困惑。
def single_recursive_ll(ll):
if ll == None:
return None
elif ll.next == None:
return LN(ll.value)
else:
return_ll = LN(ll.value, single_recursive_ll(ll.next))
if return_ll.value == return_ll.next.value:
return_ll = return_ll.next
return return_ll
【问题讨论】:
标签: python recursion linked-list