В настоящее время я пытаюсь научиться объединять два односвязных списка; однако я не могу понять, почему при вводе значения отсутствует первое значение.
Вот мой класс ..
class SinglyListNode:
def __init__(self, data):
self.data = data
self.next = None
class SinglyLinkedList:
def __init__(self):
self.head = None
Вот код слияния, который я использую:
def mergeList(self, list):
p = self.head
q = list.head
s = None
if not p:
return q
if not q:
return p
if p and q:
if p.data <= q.data:
s = p
p = s.next
else:
s = q
q = s.next
new_head = s
while p and q:
if p.data <= q.data:
s.next = p
s = p
p = s.next
else:
s.next = q
s = q
q = s.next
if not p:
s.next = q
if not q:
s.next = p
return new_head
Это числа в массиве
array1 = [ 3, 6, 6, 10, 45, 45, 50] ;
array2 = [2, 3, 55, 60 ]
А вот коды печати:
def printList(self):
temp = self.head
print "[",
while temp is not None:
print temp.data,
temp = temp.next
print "]"
s1.mergeList(s2)
print "Content of merged list"
s1.printList()
Вывод ...
[ 3 3 6 6 10 45 45 50 55 60 ]
Значение 2 в этом случае не распечатывается.
Я попытался напечатать значение заголовка new_head в mergeList, и я получил 2.
Что я не понимаю, так это почему при печати значение 2 в начале списка исчезает.
Спасибо за помощь.