【发布时间】:2015-04-15 15:07:46
【问题描述】:
我正在上编程课,我有以下作业。
编写一个菜单驱动的程序,该程序要么接受单词及其含义,要么按字典顺序显示单词列表(即在字典中)。要将条目添加到字典中时,您必须首先将单词作为一个字符串输入,然后将其含义作为单独的字符串输入。另一个要求 - 不时单词变得过时。发生这种情况时,必须从字典中删除此类单词。
使用 JOptionPane 类来输入信息。
使用链表的概念来进行这个练习。您至少需要以下课程:
- 包含单词名称及其含义的 WordMeaning 类。
- 创建信息节点的 WordMeaningNode 类及其 链接字段。
- 一个 WordList 类,它创建和维护一个单词的链接列表和 它们的含义。
- 一个字典类,用于测试您的类。
对于输出,程序应该产生两个可滚动的列表:
- 当前单词列表及其含义。
- 已删除单词的列表。您无需列出含义,只需 的话。
到目前为止,除了 remove 方法之外,我已经编写了所有代码,但我不知道如何编写代码,所以请任何人帮助我。我已经编写了 add 方法,但是现在我不知道从 WordList 类中的 remove 方法从哪里开始。我的课在下面。
WordList 类:
public class WordList {
WordMeaningNode list;
WordList() {
list = null;
}
void add(WordMeaning w)// In alphabetical order
{
WordMeaningNode temp = new WordMeaningNode(w);
if (list == null)
list = temp;
else
{
WordMeaningNode aux = list;
WordMeaningNode back = null;
boolean found = false;
while(aux != null && !found)
if( temp.getWordMeaning().getName().compareTo(aux.getWordMeaning().getName()) < 0 )
found = true;
else
{
back = aux;
aux = aux.next;
}
temp.next = aux;
if (back == null)
list = temp;
else
back.next = temp;
}
}
boolean listIsEmpty() {
boolean empty;
if (list == null) {
empty = true;
} else {
empty = false;
}
return empty;
}
public String toString()
{
String result = "";
int count = 0;
WordMeaningNode current = list;
while (current != null)
{
count++;
result += current.getWordMeaning().getName() + "\n" + "\t" + current.getWordMeaning().getDefinition();
current = current.next;
}
return result + "\nThe number of words is : " + count;
}
}
我尝试对 remove 方法使用与 add 方法相同的方法格式,但没有真正起作用,或者我做错了。
【问题讨论】:
-
不,他的任务是编码一个 WordMeaningNodes 的链表,每个节点都包含一个 WordMeaning 实例,其中包含一个单词及其定义。在发布 cmets 之前阅读问题。
标签: java data-structures linked-list