当前位置:  开发笔记 > 编程语言 > 正文

一种在python中以反向/反向顺序打印链表的方法

如何解决《一种在python中以反向/反向顺序打印链表的方法》经验,为你挑选了1个好方法。

我正在编写一个名为LList的类,并在该类中定义了几个方法。我在编写一种以反向顺序打印链表的方法时遇到问题。

class Node(object):
    def __init__(self, data=None, nextNode=None):
        self.data = data
        self.nextNode = nextNode

class LList(object):

    def __init__(self, head=None):
        self.head = head
        self.size = 0

    def insert(self, node):

        if not self.head:
            self.head = node
            self.size += 1
        else:
            # set new nodes pointer to old head
            node.nextNode = self.head
            # reset head to new node
            self.head = node
            self.size +=1

    def getSize(self):
        return self.size

    def printLL(self):
        mynode = self.head
        c = 0
        while mynode:
            c += 1
            print(mynode.data, c)
            mynode = mynode.nextNode

#a method for class that prints list backwards.       
    def reverse(self):


#main program

    MyList = LList()
    MyList.insert(Node("NJ"))
    MyList.insert(Node("NR"))
    MyList.insert(Node("OH"))

    # Use my print method
    MyList.printLL()
    #print in reverse
    MyList.reverse()

小智.. 5

class Node(object):

          def __init__(self, data=None, next_node=None):
              self.data = data
              self.next = next_node

       def ReversePrint(head):
           if head == None:
              return
           else:
             ReversePrint(head.next)
             print(head.data)

让我们以链接列表为例:1-> 2-> 3遍历代码,为ReversePrint函数提供了指向链接列表的开头(即1)的链接。我们看到head不等于null,因此我们进行移动到代码的第二行,这是对head.next的第一次递归调用,即2。再次,我们看到这个新的“ head”不等于null,因此我们进行了第二次递归调用,这一次传递了包含3的节点。我们看到这个新的“ head”不等于null,因此我们对head.next进行了第三次递归调用,在这种情况下为null。所以我们返回,因为我们击中了基本情况。现在返回第二个递归调用,然后移至递归调用之后的代码行,即print语句。我们打印3。由于此递归调用现已完成,



1> 小智..:
class Node(object):

          def __init__(self, data=None, next_node=None):
              self.data = data
              self.next = next_node

       def ReversePrint(head):
           if head == None:
              return
           else:
             ReversePrint(head.next)
             print(head.data)

让我们以链接列表为例:1-> 2-> 3遍历代码,为ReversePrint函数提供了指向链接列表的开头(即1)的链接。我们看到head不等于null,因此我们进行移动到代码的第二行,这是对head.next的第一次递归调用,即2。再次,我们看到这个新的“ head”不等于null,因此我们进行了第二次递归调用,这一次传递了包含3的节点。我们看到这个新的“ head”不等于null,因此我们对head.next进行了第三次递归调用,在这种情况下为null。所以我们返回,因为我们击中了基本情况。现在返回第二个递归调用,然后移至递归调用之后的代码行,即print语句。我们打印3。由于此递归调用现已完成,

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有