创建Python列表/节点类
作为练习,我想自己创建一个节点/列表的类。不过我不太明白怎么把一个节点添加到列表里……这是我的代码:
class Node:
def __init__(self, value):
self.element = value
self.nextEl = None
def getEl(self):
return self.element
def getNext():
return self.nextEl
class List:
def __init__(self, fnode):
self.firstNode = fnode
def add(self, newNode):
def printList(self):
temp = self.firstNode
while (temp != None):
print temp.element
temp = temp.nextEl
1 个回答
7
你需要找到最后一个没有 .nextEl
指针的节点,然后把新节点加到那里:
def add(self, newNode):
node = self.firstNode
while node.nextEl is not None:
node = next.nextEl
node.nextEl = newNode
因为要遍历整个链表,所以大多数链表的实现也会保存对最后一个元素的引用:
class List(object):
first = last = None
def __init__(self, fnode):
self.add(fnode)
def add(self, newNode):
if self.first is None:
self.first = self.last = newNode
else:
self.last.nextEl = self.last = newNode
在Python中,从左到右赋值,所以 self.last.nextEl
会在 self.last
之前被设置为 newNode
。
关于你代码的一些风格建议:
- 使用
is None
和is not None
来检查一个标识符是否指向None
(它是一个单例)。 - 在Python中不需要访问器;直接引用属性就可以了。
除非你使用的是Python 3,否则要通过继承
object
来使用新风格的类:class Node(object): # ...