我有一个链表类和一个节点类,我想写一个构造函数,它将用相同的节点填充链表,直到大小为n。然而,我似乎不能正确地表达逻辑。这是我在的地方:
我有一个字段“head”来表示链接列表的头。
“node”类有一个字段来表示下一个值(请考虑:node.next)。
public LinkedList(int size, Object value)
{
int index = 0;
head = value; //setting first node to value
Object workingReference = head; //creating a working reference to iterate through the list
for(index = 0; index < size - 1; index++)
{
workingReference.next = value; //setting the next node to the given value
workingReference = workingReference.next; //setting the "index" to the next "index"
}
}
问题是,当循环遇到约束时,从来没有一个“null”值,所以下一个节点总是给定的“值”,使得列表“无限”。我玩过将value.next设置为空,但出于某种原因,head.next设置为空。我觉得解决方案就在我面前,但我没有以正确的方式思考。谢谢你的时间。
首先,将value
和workingInformation
的类型更改为Node
,而不是Object
,只是为了帮助大家理解。
您的主要问题是,当您分配它时,您没有复制value
。您可能想要的是value
变量的值,这就是为什么将其称为Node
而不是Object
在这里非常有用。
public LinkedList(int size, Node value)
{
int index = 0;
head = value;
Node workingReference = head;
for(index = 0; index < size - 1; index++)
{
// Here, workingReference, head and value are all the same thing
// So when you set workingReference.next = value,
// You've created a loop (value.next points to value)
workingReference.next = value;
workingReference = workingReference.next;
}
}
您要做的是每次创建一个新节点,包含值的内容。让我们将
value
重命名为initialNode
,以便更清楚地了解修复程序的工作原理:
public LinkedList(int size, Node initialNode)
{
int index = 0;
head = initialNode;
Node workingReference = head;
for(index = 0; index < size - 1; index++)
{
Node newNode = new Node(initialNode.value);
workingReference.next = newNode;
workingReference = workingReference.next;
}
}
现在,每个节点都是新的,而不是创建循环
头
指向初始节点
,其下一个
(以及大小
迭代的所有下一个
都指向该初始节点
的值
字段。
如果希望值对象是传递给方法的对象,请执行以下操作:
public LinkedList(int size, Object initialValue)
{
int index = 0;
head = new Node(initialValue);
Node workingReference = head;
for(index = 0; index < size - 1; index++)
{
Node newNode = new Node(initialValue);
workingReference.next = newNode;
workingReference = workingReference.next;
}
}
我正在尝试实现一个链表。 列表有私有变量*头,*尾,计数。 我理解数据结构中的逻辑,但不可否认,我是C语言的新手,所以我觉得我可能没有正确地使用构造函数。 *head和*tail是列表节点指针。然后,列表节点具有指向上一个和下一个(双链接列表)的指针。 以下是我尝试过的: 我的程序可以编译,但当它试图使用此构造函数创建新列表时崩溃。有什么建议吗?
问题内容: 从问题的答案如何对varchar []使用array_agg() , 我们可以创建一个自定义的聚合函数来聚合Postgres中的n维数组,例如: 一个约束是值必须共享 相同的数组范围和相同的长度 ,处理空值和不同的长度是行不通的。 从答案: 没有办法解决,数组类型不允许在Postgres中出现这种不匹配的情况。您可以使用NULL值填充数组,以便所有维都具有匹配范围。 我有像这样的行 我
我正在为我的网站写一个聊天页面。我已经成功地设法向用户询问他们的名字,简单地说欢迎“username”。问题是,我还希望在聊天本身的名称输入框中使用相同的名称,而不是用户每次希望写消息时都必须输入自己的名称。我使用了onclick=来提示用户输入他们的名字,但我无法让它在名称框中显示该名字。 编辑:我发现,虽然javascript代码submit.php,但submit.php根本不显示:/
问题内容: 我如何使用该字段注入包含Map的属性文件,以用作其他构造函数arg。 从属性文件加载地图 该bean当前使用以下命令进行设置: 相当于Java: 谢谢 问题答案: 像这样: 这利用了使用任意静态工厂方法创建bean的能力,在这种情况下,使用工厂工厂方法来创建bean,然后将其注入到的适当构造函数中。
编辑:我才明白问题到底出在哪里。我需要构造函数从超类获取信息。因此,我需要像这样扩展类中的超类: 如果取消对extends favoriten部分的注释,它将加载构造函数和initialize方法。
问题内容: 我在作业上碰壁,一直在梳理网站以寻求任何有用的信息(出现空白)。我需要创建一个类,在该类中创建一个构造函数,然后再创建一个子类以扩展超类。然后,我需要使用main方法创建一个新文件来演示这两种情况。从概念上来说没问题。 我的问题是:如何使用构造函数初始化对象,但需要用户输入? 现在我得到的错误是:“类CarRental中的构造函数CarRental无法应用于给定类型;必需:String