嘿伙计们,我真的迷路了。我正在为我的数据结构类编写一个双向链表程序,但我就是想不通。
更新:所以我完成了我的单链表分配。如何将其转换为双向链表并使用提供的数据将其加载并打印?
客观的
节目规格:
从控制台读取 15 个人的姓名和体重数据,其中一行是姓名,下一行是体重,例如 names.txt。
您的程序将通过双向链表根据名称和重量为按升序维护的数据构建一个列表。
此 dll 将使用一个指针将权重保持在排序顺序,并使用另一个链接将名称保持在排序顺序。
您需要在维护此排序时构建列表,因此在任何时候调用打印方法时,它都会按顺序打印相关字段。(这意味着节点按排序顺序添加到列表中,元素不添加到列表中,然后对列表进行排序。)
例如,为(姓名 - 体重)添加 3 个元素后:Michael - 275、Tom - 150、Abe - 200。
输出:按名称排序(升序)的名称和权重。: Abe – 200, Michael – 275, Tom – 150 姓名和权重按权重排序(升序)。:汤姆 - 150,安倍 - 200,迈克尔 - 275
我要去的一小段代码
class LinkedList(object):
__slots__ = 'prev', 'next', 'value'
ll1 = LinkedList()
ll2 = LinkedList()
if __name__=="__main__":
f = open("Names.txt","r")
ll1.value = f.readline()
ll1.next = ll2
ll1.prev = None
ll2.value = f.readline()
ll2.next = None
ll2.prev = ll1
f.close()
print("Linearly: \n")
print(ll1.value)
print(ll1.next.value)
print("Reversely: \n")
print(ll2.value)
print(ll2.prev.value)
我的单链表(排序)程序
#!/usr/bin/env python
class Node:
def __init__(self):
self.data = None
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def addNode(self, data):
curr = self.head
if curr is None:
n = Node()
n.data = data
self.head = n
return
if curr.data > data:
n = Node()
n.data = data
n.next = curr
self.head = n
return
while curr.next is not None:
if curr.next.data > data:
break
curr = curr.next
n = Node()
n.data = data
n.next = curr.next
curr.next = n
return
def __str__(self):
data = []
curr = self.head
while curr is not None:
data.append(curr.data)
curr = curr.next
return "[%s]" %(', '.join(str(i) for i in data))
def __repr__(self):
return self.__str__()
if __name__=="__main__":
ll = LinkedList()
num = int(input("Enter a number: "))
while num != -1:
ll.addNode(num)
num = int(input("Enter a number: "))
c = ll.head
while c is not None:
print(c.data)
c = c.next
数据:Names.txt
Jim
150
Tom
212
Michael
174
Abe
199
Richard
200
April
117
Claire
124
Bobby
109
Bob
156
Kevin
145
Jason
182
Brian
150
Chris
175
Steven
164
Annabelle
99
正如你所看到的,我没有做太多。我不确定如何正确加载数据,我只是完全迷路了。我不知道从哪里开始。我在网上看过几个例子,但它们对我来说只是神秘的。
感谢您提前提供任何帮助。我非常感激。