Data structures 实现的链表构造函数将值填充到特定大小

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;索引

我有一个链表类和一个节点类,我想编写一个构造函数,用相同的节点填充链表,最大为“n”。然而,我似乎无法正确地表述逻辑。这就是我所处的位置:

我有一个字段“head”来表示链接列表的头

“node”类有一个字段来表示下一个值(请考虑:node.next)

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;         
    }
}