2016-07-19 3 views
-2

Я пытаюсь объединить 2 отсортированных связанных списка в один отсортированный список.Python: AttributeError: объект 'NoneType' не имеет атрибутов 'data'

class Node: 
    # Function to initialise the node object 
    def __init__(self, data): 
     self.data =data 
     self.next = None 

class LinkedList: 
     def mergeNode(self, second_list): 
     llist4 = LinkedList() 
     first_node = self.head 
     second_node = second_list.head 

     while (first_node!=None or second_node != None): 
      if (first_node.data > second_node.data): 

        llist4.push(first_node) 
        prev = first_node 
        first_node = first_node.next 

      elif (first_node.data < second_node.data): 

        llist4.push(second_node) 
        prev = second_node 
        second_node = second_node.next 

     else: 
       llist4.push(first_node) 
       llist4.push(second_node) 
       prev = second_node 
       second_node = second_node.next 
       first_node = first_node.next 
     return llist4 

if __name__ == '__main__': 

    llist = LinkedList() 
    llist2 = LinkedList() 
    llist3 = LinkedList() 

    llist.push(15) 
    llist.push(10) 
    llist.push(5) 

    llist2.push(12) 
    llist2.push(3) 
    llist2.push(2) 
     llist3 = llist.mergeNode(llist2) 
    llist3.printList() 

Но я получаю сообщение об ошибке, как:
" AttributeError: 'NoneType' object has no attribute 'data'"
Я знаю, что я мог бы использовать None значение в моем коде, я не в состоянии выяснить причину. Кто-нибудь, пожалуйста, помогите мне разобраться с проблемой?

+0

Возможный дубликат [Python: Атрибут Error - объект 'NoneType' не имеет атрибута 'что-то'] (http://stackoverflow.com/questions/8949252/ python-attribute-error-nonetype-object-has-no-attribute-something) – intboolstring

+0

Я уже прошел ссылку «Python: ошибка атрибута - объект« NoneType »не имеет атрибута« что-то », мне известно, что я пытаюсь использовать В моем коде нет значения, но я не могу понять причину. – Vishal

ответ

0

first_node!=None or second_node != None не гарантирует, что оба значения: None.

first_node = None 
second_node = "something" 
print first_node!=None or second_node != None # True 

Используйте надлежащее состояние:

while first_node is not None and second_node is not None: 
    do_something() 
Смежные вопросы