如何解决使用一个类的链表程序
是否可以通过消除类LinkedList并仅使用一个类来在Node类中编写该单个链表程序,并在其中使用LinkedList类的所有方法?如果可能的话,为什么我们更喜欢用这种方式编写,为什么不使用单个类呢? 有人说我们用它来跟踪头节点,但我不明白。我们可以简单地使用一个名为变量的头来存储头节点,然后在其他操作中进一步使用它。那么为什么要为头节点使用不同的类。
class Node:
def __init__(self,data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def push(self,new_data):
new_node = Node(new_data)
new_node.next = self.head
self.head = new_node
def deleteNode(self,key):
temp = self.head
if (temp is not None):
if (temp.data == key):
self.head = temp.next
temp = None
return
while(temp is not None):
if temp.data == key:
break
prev = temp
temp = temp.next
if(temp == None):
return
prev.next = temp.next
temp = None
def printList(self):
temp = self.head
while(temp):
print (" %d" %(temp.data)),temp = temp.next
解决方法
有很多方法可以实现与此LinkedList
类相同的接口。
其中一种方法是给LinkedList
类data
和next
字段,其中next
指向链接列表...但是您为什么认为那样更好?您的示例中的Node
类仅在LinkedList
内部使用。它根本没有外部目的。这个LinkedList类的作者创建了两个类,因此他可以将应用于节点的操作与应用于列表的操作整体分开,因为这就是他喜欢考虑的方式。您是否认为自己的方式是好是坏取决于选择...
但这是让LinkedList
与节点分开更好的真正原因:
在现实生活中的编程中,您会遇到许多单链接列表。这些中的没有可能是任何List
类的实例。您将只有一堆通过某种next
指针链接在一起的对象。您基本上将只有节点。您将要在那些链接的节点上执行列表操作,而无需向其添加列表方法,因为这些节点对象将具有其自己的不同用途-它们并不意味着要成为列表,并且您不希望列出他们。
因此,您上面的这个LinkedList
类是教学,您如何对链接的对象执行这些列表操作。您将永远不会在现实生活中编写此类,但是您将多次使用这些技术。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。