繁体   English   中英

返回存储在该索引位置的节点中的数据值

[英]Return the data value stored in the node at that index position

class UnorderedList:
def __init__(self):
    self.head = None

def __str__(self):
    item = self.head
    items = list()
    while item:
        items.append(str(item.get_data()))
        item = item.get_next()    
    return '[' + ' '.join(items) + ']' 

def add(self, item):
    new_node = Node(item)
    new_node.set_next(self.head)
    self.head = new_node

def get(self, index):
    item = self.head
    length = item.size()
    string1 = " "
    for index in range[0, length -1, -1]:
        string1 += index

测试是:会给我7

my_list = UnorderedList() for x in [3,5,4,6,7,8]: my_list.add(x) print(my_list.get(1))

我需要编写def get(self,index)函数,以便它从结尾开始返回索引的值。

我该怎么做?

您可以尝试以下方法:

for index in range[0, length -1, -1]:
    string1 += (length - 1) - index

假设您的课程节点:

class Node:
    def __init__(self,initdata):
        self.data = initdata
        self.next = None

    def get_data(self):
        return self.data

    def get_next(self):
        return self.next

    def set_data(self,newdata):
        self.data = newdata

    def set_next(self,newnext):
        self.next = newnext

    def __str__(self):
        return str(self.data)

更改您的类UnorderedList(这是链接列表):

1,如果要获取链表的大小,请添加函数size

2,您的range功能不正确,请参考官方文档 ,应为范围(长度-1、0,-1)

3,对于链表,功能是获取元素而不是通过索引,可以搜索并获取元素,直到找到特定元素为止,参见下面的函数get

class UnorderedList:
    def __init__(self):
        self.head = None

    def isEmpty(self):
        return self.head == None

    def __str__(self):
        item = self.head
        items = list()
        while item:
            items.append(str(item.get_data()))
            item = item.get_next()    
        return '[' + ' '.join(items) + ']'


    def add(self,item):
        new_node = Node(item)
        new_node.set_next(self.head)
        self.head = new_node

    def size(self):
        current = self.head
        count = 0
        while current != None:
            count = count + 1
            current = current.get_next()
        return count

    def get(self,item):
        current = self.head
        found = False
        string1=""       
        while current != None and not found:
            string1 += str(current)
            if current.get_data() == item:   
                found = True
            else:
                current = current.get_next()

        return string1

测试:

my_list = UnorderedList()
for x in [3,5,4,6,7,8]:
    my_list.add(x)
print my_list.get(4)

它将所有元素添加为链接列表my_list ,然后可以获取所有元素,直到找到4为止,输出为:

8764

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM