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对象,其内容与传入的内容相同。您将以相同的方式从字符串构造一个新列表。