Невозможно сравнить значение списка при объединении двух отсортированных списков в односвязном списке - PullRequest
0 голосов
/ 08 апреля 2019

Я делаю свою собственную функцию merge_list рекурсивно, но я не могу сравнить значения в двух односвязных списках

мой код начинается с

class SList:
    class _Node:
        def __init__(self, element, next=None):
            self._element = element
            self._next = next

        def element(self):
            return self._element

        def next(self):
            return self._next

        def set_element(self, element):
            self._element = element

        def set_next(self, next):
            self._next = next
.
.
.
.
def merge_list(s1, s2): # merge_list recursively
    if s1 is None and s2 is None:
        return None
    if s1 is None:
        return s2
    if s2 is None:
        return s1

    p1 = s1._head
    p2 = s2._head

    if  p1 < p2:
        s3 = s1
        s3._next = merge_list(s1.next(), s2)
    else:
        s3 = s2
        s3._next = merge_list(s1, s2.next())
    return s3

И мой вклад ...

s1 = SList()
    s1.insert_first("1")
    s1.insert_first("3")
    s1.insert_first("5")
    s1.insert_first("7")
    s1.insert_first("9")
    s1.insert_first("11")
    s1.insert_first("13")
    print(f"s1 :", s1)


    s2 = SList()
    s2.insert_first("2")
    s2.insert_first("4")
    s2.insert_first("6")
    print(f"s2 : ", s2)

    merge_list(s1, s2)

два списка успешно создаются, но когда я использую свою собственную функцию merge_list, вывод ...

s1 : 13 -> 11 -> 9 -> 7 -> 5 -> 3 -> 1 -> None: 7 element(s)
  File "###################(my address)", line 312, in <module>
s2 :  6 -> 4 -> 2 -> None: 3 element(s)
    merge_list(s1, s2)
  File "###################(my address)", line 158, in merge_list
    if  p1 < p2:
TypeError: '<' not supported between instances of '_Node' and '_Node'

После этого сообщения TypeError я не могу сравнить значение списка с '<', тогда что мне нужно сделать, чтобы сравнить значение списка? </p>

...