Data structures 实现的链表构造函数将值填充到特定大小
我有一个链表类和一个节点类,我想编写一个构造函数,用相同的节点填充链表,最大为“n”。然而,我似乎无法正确地表述逻辑。这就是我所处的位置: 我有一个字段“head”来表示链接列表的头 “node”类有一个字段来表示下一个值(请考虑:node.next)Data structures 实现的链表构造函数将值填充到特定大小,data-structures,constructor,linked-list,Data Structures,Constructor,Linked List,我有一个链表类和一个节点类,我想编写一个构造函数,用相同的节点填充链表,最大为“n”。然而,我似乎无法正确地表述逻辑。这就是我所处的位置: 我有一个字段“head”来表示链接列表的头 “node”类有一个字段来表示下一个值(请考虑:node.next) public LinkedList(整数大小,对象值) { int指数=0; head=value;//将第一个节点设置为value Object workingReference=head;//创建一个工作引用以遍历列表 对于(索引=0;索引
public LinkedList(整数大小,对象值)
{
int指数=0;
head=value;//将第一个节点设置为value
Object workingReference=head;//创建一个工作引用以遍历列表
对于(索引=0;索引
问题是,当循环命中约束时,从来没有“null”值,因此下一个节点总是给定的“值”,使得列表“无限”。我已经使用过将value.next设置为null,但由于某种原因,这将head.next设置为null。我觉得解决方案就在我面前,但我没有以正确的方式思考。谢谢您的时间。首先,将
值
和工作参考
的类型更改为节点
,而不是对象
,以帮助大家理解
您的主要问题是在分配值时没有复制值。您可能需要的是值
变量的值,这就是为什么在这里将其称为节点
而不是对象
非常有用的原因
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;
}
}
现在,每个节点都是新的,而不是创建循环头
指向初始节点
,其下一个
(以及大小
迭代的所有下一个
都指向该初始节点
的值
字段
如果希望值对象是传递给方法的对象,请执行以下操作:
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;
}
}
public链接列表(int大小,对象初始值)
{
int指数=0;
head=新节点(初始值);
节点工作参考=头部;
对于(索引=0;索引
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;
}
}