【发布时间】:2015-05-04 10:21:49
【问题描述】:
如何对列表重新排序,使其从第一次出现的最小元素开始,然后反复向后移动一步,然后向前移动三步? 我只能找到最小的元素(例如,我在下面的测试中得到了 5)?那么如何获取列表(5、53、65、33、51、62、61、38、74、45、97、49)?
class ExtendedLinkedList(LinkedList):
def __init__(self, L = None):
super().__init__(L)
def rearrange(self):
node = self.head
if not node:
return None
Min = node.value
while node:
if node.value < Min:
Min = node.value
node = node.next_node
return Min
---------test---------
LLL = ExtendedLinkedList([49, 97, 53, 5, 33, 65, 62, 51, 38, 61, 45, 74])
LLL.print()
print(LLL.rearrange())
【问题讨论】:
-
嗯,首先,如果你想的话,你将不得不跟踪最小 节点,而不仅仅是最小 值能够从该节点向后移动一步。
-
其次,您可能需要使用双向链表,而且看起来是单链表。虽然奇怪的是,特定要求意味着有一种方法可以使用单链表非常有效地完成此操作,但这可能不是您想要的,并且需要一些聪明才智。
-
@abarnert 我不太确定 min 节点和 min 值有什么区别,也许我需要 value 并将 value 放入列表中?
-
所以我想问一下:你和this person是同一个班的,还让我们帮你做作业?
-
@cge 我不太确定,可能有同样的问题,只是混淆了后退和前进,因为尝试了几次。
标签: python linked-list