下面是一个简单的链表程序,我知道链表在概念上是如何工作的(添加、删除等),但我发现很难从面向对象的设计角度理解它是如何工作的。在
代码:class Node():
def __init__(self,d,n=None):
self.data = d
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():
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 get_list(self):
new_pointer = self.root
while new_pointer:
print new_pointer.get_data()
new_pointer = new_pointer.get_next()
def remove(self,d):
this_node = self.root
prev_node = None
while this_node:
if this_node.get_data() == d:
if prev_node:
prev_node.set_next(this_node.get_next())
else:
self.root = this_node
self.size -= 1
return True
else:
prev_node = this_node
this_node = this_node.get_next()
return False
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)
myList.add(8)
myList.add(12)
myList.get_list()
我有几个问题。。在它是如何存储这些值的。据我所知,每个变量可以保存一个值。那么data/next_节点是如何保存多个值的呢。下一个节点是否保存下一个节点的内存位置?
new_pointer.get_data()新的_指针如何访问get_data()?我们不需要有一个实例来访问节点的方法吗?
这个问题可能很傻,但我对面向对象编程还是个新手。如果有人能回答这些问题,或者发布一个外部链接来解决这些问题,那将是非常有帮助的。在
提前谢谢。在