【问题标题】:Why do i get <__main__.Node object at 0x04E2AA30> instead of the value for rotating linked list为什么我在 0x04E2AA30> 处得到 <__main__.Node 对象而不是旋转链表的值
【发布时间】:2021-08-10 15:01:27
【问题描述】:
class Node:
    def __init__(self, dataval=None):
        self.dataval = dataval
        self.nextval = None


class LinkedList:
    def __init__(self):
        self.headval = None

    def __iter__(self):

        return self.headval

    def printList(self):
        printval = self.headval
        while printval is not None:
            print(printval.dataval)
            printval = printval.nextval

    def addBeginning(self, newdata):
        NewNode = Node(newdata)
        NewNode.nextval = self.headval
        self.headval = NewNode


def rotateRight(head, k):
    listLength = 1
    listTail = head.headval
    while listTail.nextval is not None:
        listTail = listTail.nextval
        listLength += 1

    offset = abs(k) % listLength

    newTailPos = listLength - offset if k > 0 else offset
    newTail = head.headval

    for i in range(1, newTailPos):
        newTail = newTail.nextval
        print(newTail)

    newHead = newTail.nextval
    newTail.nextval = None
    listTail.nextval = head.headval

    return newHead


llist = LinkedList()
llist.headval = Node(1)
e2 = Node(2)
e3 = Node(3)
e4 = Node(4)
e5 = Node(5)


llist.headval.nextval = e2
e2.nextval = e3
e3.nextval = e4
e4.nextval = e5

llist.addBeginning(0)


rotateRight(llist, 3)

我想创建一个函数,它将获取一个链表并将其向右旋转 k 个位置。我尝试调试代码,但我不断将&lt;__main__.Node object at 0x04E2AA30&gt; 作为返回值。

如何将其转换为我想要的数据类型,如字符串或整数?

假设我有一个函数

def rotateRight(head, k):
    listTail = head 
    while listTail.next is not None:
        #do something

由于某些原因,这段代码不起作用

listTail = head.headval

之所以有效,是因为在我的 LinkedList 类中我定义了 __ init __ 函数

self.headval = None 

如果有人可以简要解释一下或将我推荐到可以解释这一点的地方,我将不胜感激。

【问题讨论】:

    标签: python data-structures singly-linked-list


    【解决方案1】:

    我尝试调试代码,但我一直在 0x04E2AA30> 处获取 ma​​in.Node 对象作为返回值。

    如何将其转换为我想要的数据类型,如字符串或整数?

    您已将 Node 对象定义为具有 .dataval 来包含节点的数据。

    print(some_node, some_node.dataval)
    

    将因此打印

    <__main__.Node object at 0xHEXYHEX> hello
    

    对于包含值 'hello' 的节点。

    【讨论】:

    • 啊..实际上我的代码仍然偏离 1 个索引位置。在 for 循环中,最后一次迭代给出的值为 2,在 for 循环之后我分配了一个新变量 newHead = newTail.nextVal 应该给我 3 但它仍然是 2
    • 好的,所以实际上在 for 循环中我取出了范围的下限参数并且它可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2019-07-20
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 2013-03-03
    相关资源
    最近更新 更多