java链表从字符串复制构造函数和构造函数

java链表从字符串复制构造函数和构造函数,java,constructor,linked-list,Java,Constructor,Linked List,我有两个关于链表的问题,所以我想我会在一个问题中发布它们 首先,我将显示我的节点类以及从字符串复制构造函数和构造函数 class CharNode { private char letter; private CharNode next; public CharNode(char ch, CharNode link) { letter = ch; next = link; } public void setCharacter

我有两个关于链表的问题,所以我想我会在一个问题中发布它们

首先,我将显示我的节点类以及从字符串复制构造函数和构造函数

class CharNode 
{ 

   private char letter; 
   private CharNode next; 

   public CharNode(char ch, CharNode link) 
    { 
    letter = ch;
    next = link;
   }

   public void setCharacter(char ch) 
    { 
    letter = ch;
    }

   public char getCharacter() 
    {
    return letter;
    } 

    public void setNext(CharNode next) 
    {
    this.next = next;
    } 

   public CharNode getNext() 
    {
    return next;
    } 

}  
复制构造函数

   // copy constructor  
   public CharList(CharList l) 
{
    CharNode pt = head;

    while(pt.getNext() != null)
    {
        this.setCharacter() = l.getCharacter();
        this.setNext() = l.getNext();
    }
} 
字符串的构造函数

   // constructor from a String 
   public CharList(String s) 
{ 
    head = head.setCharacter(s);


}
当我试图编译时,我的复制构造函数出现错误,它说它找不到符号
this.setCharacter()
。。。和
l.setCharacter()

我只是做错了吗

用字符串的构造函数,我知道这是错误的。我考虑过使用
charAt()
,但是我怎么知道什么时候停止循环才能这样做呢?这是一个好办法吗


任何帮助都将不胜感激。

您的设置字符方法可能在您的节点中,而不是列表中。您还需要移动指针。我的意思是,您曾经在哪里“转到下一个节点”

您的复制构造函数用于类
CharList
,而
setCharacter
是在
CharNode
中定义的

复制构造函数中的此
引用构造函数所定义的CharList对象的当前实例
l
也是代码中的
CharList
,而不是定义
setCharacter
CharNode


复制构造函数应该在
CharNode
类中定义。

在您的CharList构造函数中,
引用
CharList
类,该类没有
setCharacter()
方法(CharNode有)。此外,在java中调用方法时,需要传递参数,例如,
setFoo(newFoo)
,而不是
setFoo()=newFoo

在“复制构造函数”中,需要从列表头开始遍历正在传递的列表,并为新列表创建新节点

public CharList(CharList l) 
{
    // Whatever method your CharList provides to get the 
    // first node in the list goes here
    CharNode pt = l.head(); 

    // create a new head node for *this* list
    CharNode newNode = new CharNode();
    this.head = newNode;

    // Go through old list, copy data, create new nodes 
    // for this list.
    while(pt != null)
    {
        newNode.setCharacter(pt.getCharacter());
        pt = pt.getNext();
        if (pt != null)
        {
            newNode.setNext(new CharNode());
            newNode = newNode.getNext();
        }

    }
} 
至于从
字符串创建列表
。。。相同的概念,除了您迭代字符串而不是另一个
字符列表

for (int i = 0; i < myString.length(); i++)
{ 
    ...
    newNode.setCharacter(myString.charAt(i));
    ...
for(int i=0;i
到目前为止,您已经收到了7个问题的答案,但没有接受任何答案。如果您不接受好的答案,您会发现人们不太愿意提供帮助。您必须阅读一些关于封装的概念,如果您这样做,您将自己解决编译问题您必须接受答案?您可以接受回答r通过单击它旁边的复选标记,我可以说类似CharNode.setCharacter(paramater)的内容吗这是基本的想法,虽然您通常使用CharNode的实例,而不是类本身。字符串有长度?就像数组有长度一样吗?字符串是字符数组。我必须在构造函数中创建一个新的CharNode,对吗?@Alexthefth-是的,
string
对象提供一个
length()
method。您可能希望阅读javadoc以查看它所具有的所有其他内容。至于您的第二个问题,嗯……是的。否则您将如何构造一个新列表?上述代码已完成,将创建一个新的CharList对象,其内容与传入的内容相同。您将以相同的方式从字符串构造一个新列表。