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代码。
我从这段代码中有两个问题
发布于 2021-01-15 06:14:39
下面是Python中Node和LinkedList类的一个简单实现。Node类只有两个属性: value和next。LinkedList类只有一个属性: start。当一个空的LinkedList被创建时,它没有开始。所有有趣的操作都发生在add_item_to_end()方法中。将第一项添加到链接列表时,将创建一个节点并将其分配给start。当添加第二项时,将创建另一个节点并将其分配给开始节点的下一个未占用的节点。当第三,第四,..。添加节点时,add方法从LinkedList的开始开始,遍历所有连续链接的节点,直到到达没有next的节点,然后将该节点的下一个设置为要添加的节点。
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']
https://stackoverflow.com/questions/65730866
复制相似问题