【发布时间】:2013-11-17 05:00:00
【问题描述】:
大家好,我真的迷路了。我正在为我的数据结构类编写一个双向链表程序,但我就是想不通。
更新:所以我已经完成了我的单链表分配。如何将其转换为双向链表并使用提供的数据将其加载并打印?
目标
节目规格:
从控制台读取 15 个人的姓名和体重数据,其中一行是姓名,下一行是体重, 就像在 names.txt 中一样。
您的程序将通过双向链表根据名称和重量为按升序维护的数据构建一个列表。
此 dll 将使用一个指针来保持权重排序,并使用另一个链接保持名称排序。
您需要在维护此排序时构建列表,因此在任何时候调用打印方法都会打印相关字段 为了。 (这意味着节点按排序顺序添加到列表中, 元素不会添加到列表中,然后是在 列表。)
例如为(姓名-体重)添加3个元素后:迈克尔- 275,汤姆 - 150,安倍 - 200。
输出:按名称排序(升序)的名称和权重。 : 安倍 – 200, 迈克尔 - 275,汤姆 - 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
如你所见,我没有做太多。我不确定如何正确加载数据,我只是完全迷路了。我不知道从哪里开始。我在网上看过几个例子,但它们对我来说只是神秘的。
提前感谢您的帮助。非常感谢。
【问题讨论】:
-
对于 Python 类来说,这是多么糟糕的任务。或者,对于数据结构类来说,这是多么糟糕的语言选择啊。这是哪个学校的?
-
-1 用于在此处上传(几乎)整个作业。应该问一些具体的问题,例如,使用某种语言/技术可以做些什么来执行某项任务。
-
next 可能应该是 LinkedList 的另一个实例,而不是一个字符串......与 prev 相同......是的,这对于 python 程序来说不是一个很好的例子......它更适合 c /c++ 但没关系
-
无论哪所学校教人们使用
__slots__,都不必要地需要禅宗的补习。 -
对不起,这只是我能想到的。我选择对这个数据结构类使用 python,因为我比 C== 更了解它。让我为这个作业提供更多细节和更好的代码。
标签: python data-structures python-3.x linked-list