Python 3.x 按字母顺序向列表中添加名称?

Python 3.x 按字母顺序向列表中添加名称?,python-3.x,data-structures,linked-list,singly-linked-list,Python 3.x,Data Structures,Linked List,Singly Linked List,假设我有一个名字的链表。每个节点都按字母顺序排列。如何正确循环并在正确位置插入名称?我们假设它不区分大小写 def add(self, name): if self._size == 0: self.add_first(name) self._size += 1 elif self._size >= 1: cur = self._head while name.upper() > cur.upper()

假设我有一个名字的链表。每个节点都按字母顺序排列。如何正确循环并在正确位置插入名称?我们假设它不区分大小写

def add(self, name):
    if self._size == 0:
        self.add_first(name)
        self._size += 1
    elif self._size >= 1:
        cur = self._head
        while name.upper() > cur.upper() or cur.get_next is not None:
这就是我被困的地方

节点编码如下所示

class Node():
    def __init__(self, element, next_node=None):
        self._element = element
        self._next = next_node

    def set_next(self, next_node):
        self._next = next_node

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

    def get_next(self):
        return self._next

    def get_element(self):
        return self._element

下面是一个通用的迭代实现。您必须使其适应您的链表类

class Node:
    def __init__(self, val, _next):
        self.val = val
        self.next = _next 
    def add(self, name):
        up = name.upper()
        if up < self.val.upper():
            return Node(name, self)  
            # We could also change self.val to update the head 
            # without worrying about returning values:
            # self.val, self.next = name, Node(self.val, self.next)
        curr = self
        while True:    
            if not curr.next:
                curr.next = Node(name, None)
                break
            else:
                if curr.val.upper() < up < curr.next.val.upper():
                    curr.next = Node(name, curr.next)
                    break
                else:
                    curr = curr.next
        return self
    def __repr__(self):
        return "Node({0.val}, {0.next!r})".format(self)

head = Node("Adam", None)
head = head.add("Aardvark")
head = head.add("Bob")
print(head)
# Node(Aardvark, Node(Adam, Node(Bob, None)))
类节点:
定义初始值(self、val、next):
self.val=val
self.next=\u next
def添加(自我,姓名):
up=name.upper()
如果向上
这个问题不是Python特有的,而是关于如何使用排序链表的问题。如果您不想在线查找相关资源,我建议添加
数据结构
和/或
链表
标记。您能否提供整个类定义,以便我们了解整个情况。例如,变量
contact
get_next
…谢谢,但我试图在避免递归实现的同时解决它