我需要实施一个链接列表来搜索并将学生添加到现有的学生群体中。数据学生包括学生证和姓名。例如
studentList = [
student = ("11", "John"),
student = ("12", "Cindy"),
student = ("13", "Tracy"),
]
到目前为止,我有以下代码,但它只能用于单个数据,如何包含多个数据?如何成功搜索学生?
class Node(object):
def __init__ (self, code, name, n = None):
self.data = code
self.data = name
self.next_node = n
def get_next (self):
return self.next_node
def set_next (self, n):
self.next_node = n
def get_data (self):
return self.data
def set_data (self, d):
self.data = d
class LinkedList (object):
def __init__(self, r = None):
self.root = r
self.size = 0
def get_size (self):
return self.size
def add (self, d):
new_node = Node (d, self.root)
self.root = new_node
self.size += 1
def find (self, d):
this_node = self.root
while this_node:
if this_node.get_data() == d:
return d
else:
this_node = this_node.get_next()
return None
myList = LinkedList()
myList.add(5, "Trevor")
myList.add(10, "Trevor")
print("size="+str(myList.get_size()))
print(myList.find(10))
答案 0 :(得分:1)
您可以使用内置列表。 list.append添加到列表中并使用列表推导或过滤器在列表中查找。请参阅链接https://docs.python.org/2/tutorial/datastructures.html
答案 1 :(得分:0)
以下是我的修改。你错过了字符串参数。此外,您的初始代码中有两个数据变量。
class Node(object):
def __init__ (self, code, name, n = None): #here you have code and name
self.data1 = code #you need to change this to data 1
self.data2 = name #you need to change this to data 2 --> they can't have the same name
self.next_node = n
def get_next (self):
return self.next_node
def set_next (self, n):
self.next_node = n
def get_data (self):
return self.data1 # update this to data1 to reflect the code
def set_data (self, d):
self.data1 = d
class LinkedList (object):
def __init__(self, r = None):
self.root = r
self.size = 0
def get_size (self):
return self.size
def add (self, d, s): # have this accept d and s (string)
new_node = Node (d, s, self.root) #include a string parameter
self.root = new_node
self.size += 1
def find (self, d):
this_node = self.root
while this_node:
if this_node.get_data() == d:
return d
else:
this_node = this_node.get_next()
return None
答案 2 :(得分:0)
此代码存在一些问题(缩进关闭,参数未传递)。见评论:
class Node(object):
def __init__ (self, code, name, n = None):
self.data = code
self.data2 = name # using same variable twice
self.next_node = n
def get_next (self):
return self.next_node
def set_next (self, n):
self.next_node = n
def get_data (self):
return self.data
def set_data (self, d):
self.data = d
class LinkedList (object):
def __init__(self, r = None):
self.root = r
self.size = 0
def get_size (self):
return self.size
def add (self, d, name):
new_node = Node (d, name, self.root) # you didn't pass name which is a required argument
self.root = new_node
self.size += 1
def find (self, d):
this_node = self.root
while this_node:
if this_node.get_data() == d:
return this_node # indentation off, don't you want the node, instead of d?
else:
this_node = this_node.get_next()
return None
myList = LinkedList()
myList.add(5, "Trevor")
myList.add(10, "Trevor")
print("size="+str(myList.get_size()))
print(myList.find(10))
将来,请发布您的错误消息。您的代码似乎在运行时抛出了缩进错误。