微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用一个类的链表程序

如何解决使用一个类的链表程序

是否可以通过消除类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类相同的接口。

其中一种方法是给LinkedListdatanext字段,其中next指向链接列表...但是您为什么认为那样更好?您的示例中的Node类仅在LinkedList内部使用。它根本没有外部目的。这个LinkedList类的作者创建了两个类,因此他可以将应用于节点的操作与应用于列表的操作整体分开,因为这就是他喜欢考虑的方式。您是否认为自己的方式是好是坏取决于选择...

但这是让LinkedList与节点分开更好的真正原因:

在现实生活中的编程中,您会遇到许多单链接列表。这些中的没有可能是任何List类的实例。您将只有一堆通过某种next指针链接在一起的对象。您基本上将只有节点。您将要在那些链接的节点上执行列表操作,而无需向其添加列表方法,因为这些节点对象将具有其自己的不同用途-它们并不意味着要成为列表,并且您不希望列出他们。

因此,您上面的这个LinkedList类是教学,您如何对链接的对象执行这些列表操作。您将永远不会在现实生活中编写此类,但是您将多次使用这些技术。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。