首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

LinkedList
EN

Stack Overflow用户
提问于 2021-01-15 05:15:26
回答 1查看 121关注 0票数 0
代码语言:javascript
运行
复制
class Node:
    def __init__(self, item):
        self.data = item
        self.next = None


class LinkedList:
    def __init__(self):
        self.nodeCount = 0
        self.head = None #Headnode(First node of LinkedList)
        self.tail = None #Tailnode(Last node of LinkedList)
    def getAt(self, pos): #pos = index number
        if pos<=0 or pos>self.nodeCount:
            return None
        i = 1
        curr = self.head
        while i < pos:
            curr = curr.next
            i += 1
        return curr

这是Python从DS类生成的LinkedList代码。

我从这段代码中有两个问题

  1. 当我学习C和C++时,为了制作"Node类“,我必须创建Data字段和Link(指针)字段。我将next Node的地址(指针)存储在Node的Link字段中。这样我就可以转移到下一个节点。但是在Python代码中,我不知道节点类的成员'self.next‘下一个节点是如何点的。哪一个保存在下一个字段?

  1. 我不继承链接列表类中的Node类。但是,当我创建self.next函数时,如何在LinkedList类中使用Node类的成员函数“getAt”呢?
EN

回答 1

Stack Overflow用户

发布于 2021-01-15 06:14:39

下面是Python中Node和LinkedList类的一个简单实现。Node类只有两个属性: value和next。LinkedList类只有一个属性: start。当一个空的LinkedList被创建时,它没有开始。所有有趣的操作都发生在add_item_to_end()方法中。将第一项添加到链接列表时,将创建一个节点并将其分配给start。当添加第二项时,将创建另一个节点并将其分配给开始节点的下一个未占用的节点。当第三,第四,..。添加节点时,add方法从LinkedList的开始开始,遍历所有连续链接的节点,直到到达没有next的节点,然后将该节点的下一个设置为要添加的节点。

代码语言:javascript
运行
复制
class Node:
    def __init__(self, value = None, next = None):
        self.value = value
        self.next = next

class LinkedList:
    def __init__(self, start = None):
        self.start = start

    def add_item_to_end(self, item):
        my_node = Node(value=item)
        if self.start == None:
            self.start = my_node
        else:
            p = self.start
            while p.next:
                p = p.next
            p.next = my_node

    #The following method is just to visualize the linked list. 
    #It is not necessary for the functioning of the list:
    def toList(self): 
        result = []
        if self.start:
            p = self.start
            while p is not None:
                result.append(p.value)
                p = p.next
        return result

#example runs
my_ll = LinkedList()
print(my_ll.toList())
#output: []

my_ll.add_item_to_end("bread")
print(my_ll.toList())
#output: ['bread']

my_ll.add_item_to_end("milk")
print(my_ll.toList())
#output: ['bread', 'milk']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65730866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档