我对编码非常陌生,我有一个关于用Python在双链表中打印节点的基本问题。
class Node():
def __init__(self, key = None, prev = None, next = None):
self.key = key
self.prev = prev
self.next = next
def __str__(self):
return ('[%s][%d][%s]' % (repr(self.prev), self.key, repr(self.next)))
显然,接下来我还有一些用于list类本身的代码。假设我有一个包含两个节点的双链表:
[*location of prev node*][21][*location of next node*]
希望这是有意义的,并感谢任何帮助!
需要为每个节点
初始化f.name,而不必创建self.name
。您可以添加一个self.id
,该self.id
初始化,并在每次创建时递增一个静态计数器
。
步骤1-添加静态计数器
并初始化self.id
属性
计数器
从0
开始,可以通过node.counter
访问。
class Node():
counter = 0
def __init__(self, key = None, prev = None, next = None):
Node.counter += 1
self.id = Node.counter
self.key = key
self.prev = prev
self.next = next
def __str__(self):
sprev = repr(self.prev)
if self.prev != None :
sprev = '%s%d' % (self.__class__.__name__, self.prev.id)
snext = repr(self.next)
if self.next != None :
snext = '%s%d' % (self.__class__.__name__, self.next.id)
return ('[%s][%d][%s]' % (sprev, self.key, snext))
以下是一些例子:
>>> node1 = Node(21)
>>> print(node1)
[None][21][None]
>>> node2 = Node(10,node1)
>>> print(node2)
[Node1][10][None]
>>> node3 = Node(11,node2,node1)
>>> print(node3)
[Node2][11][Node1]
我有一个家庭作业要写“先到先得”和“循环模拟”,并对它们进行比较。我开始创建一个链表来制作事件列表。我已经实现了插入和打印列表功能,但无法正常工作。我的朋友告诉我使用双链表,所以我重新创建了链表,并试图使打印功能工作。我有一个关于插入函数的问题,因为我在while循环中的语句顺序有误。在修复了许多错误后,print函数会多次打印同一个节点,而不是整个列表。我不知道程序的哪一部分是错的。我认为我在i
下面是链接列表代码中的删除节点,它将头指针和要删除的位置作为参数(链接列表中的位置索引从零开始)。删除后,返回指向head的指针。 假设列表:20-2-19-7-3-6。要删除的位置是2(节点19要删除,因为索引从零开始)。 删除并打印后,它会显示:20-2-0-3-6。(即,直接位于已删除节点旁边的节点打印0) 但是如果我删除“free(head)”行,那么它将打印:20-2-7-3-6(正确)
问题内容: 好的,我正在尝试学习如何打印出链表。我有需要用于列表的所有方法,但是我不知道如何显示节点的值。现在,我的main方法中什么都没有,因为在尝试在main方法中调用非静态方法时,我不断出错。我有一个toString方法,用于显示列表的内容。我将如何调用此toString以显示每个节点的值?任何建议将不胜感激。 这是节点类: 这是LinkedList类,其中包含操作列表的main和方法: 问
题目链接 牛客网 题目描述 从尾到头反过来打印出每个结点的值。 解题思路 1. 使用递归 要逆序打印链表 1->2->3(3,2,1),可以先逆序打印链表 2->3(3,2),最后再打印第一个节点 1。而链表 2->3 可以看成一个新的链表,要逆序打印该链表可以继续使用求解函数,也就是在求解函数中调用自己,这就是递归函数。 // java public ArrayList printListFro
一、题目 输入个链表的头结点,从尾到头反过来打印出每个结点的值。 二、解题思路 使用栈的方式进行。 将链表从头到尾压入栈内,出栈的过程就对应着从尾到头。 三、解题代码 public class Test { /** * 结点对象 */ public static class ListNode { int val; // 结点的值
我试图以相反的顺序打印一个链表,但实际上没有使用递归进行反转,但我的输出结果非常奇怪。看起来我的代码基本上选择了第一个节点,并在打印完链表的其余部分(按原始顺序)后将其打印出来。我所写的代码(据我所知)是正确的,并且与internet上解决此问题的代码相匹配。 这是我的代码: 以下是节点类: 这是我给出的输入,然后是输出: 这里发生的另一个奇怪的事情是,如果我改变递归的条件,假设我这样做: 然后是
我试图打印一个双链接列表,从tail元素开始,以first元素结束。我下面的代码就是这样做的,但出于某种原因,我也返回了被删除的项目。当我从头到尾打印列表时,它不会这样做。Idk,如果是toString导致了这个或dequed方法。我把两者都包括在内。