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
…谢谢,但我试图在避免递归实现的同时解决它