包含许多数据的Python链接列表

时间:2016-05-13 14:53:01

标签: python

我需要实施一个链接列表来搜索并将学生添加到现有的学生群体中。数据学生包括学生证和姓名。例如

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))

3 个答案:

答案 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))

将来,请发布您的错误消息。您的代码似乎在运行时抛出了缩进错误。