我在java中有一个字典项目。它将单词添加到trie树中,然后我需要在我输入的每个单词的末尾添加一个链接列表,以保存含义。我已经为trie和链表制作了两种节点,如下图所示。
static class TrieNode{
TrieNode[]children=new TrieNode[29];
boolean IsEnd;
TrieNode(){
IsEnd=false;
for(int i=0;i<29;i++)
children[i]=null;
}
}
static class Meaningnode{
String Meaning;
Meaningnode next;
public Meaningnode(String Meaning){
this.Meaning=Meaning;
}
}
26个字母的29个链接,以及一个到父和空格"的链接和一个到列表的链接;
在对29个条目的解释中,您写道:
29个链接,包含26个字母,一个到父级和空格"的链接,以及一个到列表的链接;
这里的问题是;列表中的一个";将违反预期的类型。声明为:
TrieNode[]children=new TrieNode[29];
但是您希望为Meaningnode
而不是TrieNode
使用条目。这是不对的。相反,只需为该目的指定一个单独的属性,就像您已经为isEnd
指定了一个单独属性一样。我甚至会为父项做一个单独的条目(如果你真的需要父项引用的话(。
最后,为Meaningnode
添加一个构造函数,该构造函数可以使用第二个参数来指定next
:
static class Meaningnode {
String Meaning;
Meaningnode next;
public Meaningnode(String Meaning) {
this.Meaning = Meaning;
}
public Meaningnode(String Meaning, Meaningnode next) {
this.Meaning = Meaning;
this.next = next;
}
}
static class TrieNode {
TrieNode[] children = new TrieNode[27];
boolean IsEnd;
TrieNode parent;
Meaningnode meaning;
TrieNode() {
IsEnd = false;
parent = null;
meaning = null;
for (int i = 0; i < 27; i++)
children[i] = null;
}
// Method to prepend a meaning to the list of meanings:
addMeaning(string meaning) {
this.meaning = new Meaningnode(meaning, this.meaning);
}
// Other methods...
// ...
}
static class Node{
String mean;
Node next;
Node(String s){
mean=s;
next=null;
}
}
static class TrieNode{
TrieNode[]children=new TrieNode[29];
boolean IsEnd;
Meanings_Linked_List list=new Meanings_Linked_List();
TrieNode(){
IsEnd=false;
for(int i=0;i<29;i++)
children[i]=null;
}
}
我知道它还没有完成,只是因为项目的原因,我让它变成这样,无法修复。