顯示我有以下文字:每個字打印多少次排序的字符串單鏈表
"better better yes yes yes better finally the rock rock the".
我寫這需要每一個字,並將其添加到鏈接列表的方法。 然後我寫了另一種使用合併排序的方法。
鏈表我拿到後歸併排序如下:
"better better better finally rock rock the the yes yes yes".
所以以上兩種方法很好地工作。 :-)
我想剛剛打印的清單時計數器值,顯示它是多少次在列表中顯示爲沿着顯示只有一次的每個節點。 不應從鏈接列表中刪除重複的節點。
所以結果我應該得到的是:
better 3
finally 1
rock 2
the 2
yes 3
代碼:
public class WordNode
{
private String _word;
private WordNode _next;
/**
* Constructor for objects of class WordNode
*/
public WordNode(String wrd, WordNode node)
{
this._word = wrd;
this._next = node;
}
public class TextList
{
private WordNode _head;
public TextList()
{
_head = null;
}
所以我寫了下面的toString()方法:
public String toString()
{
String result = "";
int count = 1;
WordNode currentNode = _head;
WordNode tmp = currentNode.getNext();
if (currentNode == null)
return null;
while(currentNode != null)
{
tmp = currentNode.getNext();
while (tmp != null && currentNode.getWord().equals(tmp.getWord()))
{
count++;
tmp = tmp.getNext();
}
result += currentNode.getWord() + "\t" + count + "\n";
count = 1;
currentNode.setNext (tmp);
currentNode = currentNode.getNext();
}
return ("The List is: " + result);
}
但印刷後,我得到:
The List is: better 3
finally 1
rock 2
the 1
the 1
yes 3
調試過程中,我發現了toString()方法將不能正確計算它被添加到鏈表中的最後一個字(「的」 ...)。
「所述」 是(a)中示出而不是兩次只有一次(b)該計數器是1而不是2
請協助。
#####################################
我增加了更多的信息:
我還有一個測試類,基本上只是調用構造函數。
String text1 ="better better yes yes yes better finally the rock rock the";
TextList list1 = new TextList(text1);
System.out.println("\nResult: ");
System.out.println(list1);
的文本清單構造基本分析的全文,將它正確,然後調用它增加了每個文本的鏈接列表的另一種方法。
public TextList (String text)
{
String textToAdd;
int i = 0, j = 0;
while (i < text.length()-1)
{
System.out.print("\n");
System.out.println("I = " + i);
while ((text.charAt(j) != ' ') && (j < text.length()-1))
{
char c = text.charAt(j);
if (j != text.length())
j++;
}
//J Pointer points to the "backspace".
textToAdd = text.substring(i,j+1); //Puts the word in textToAdd.
System.out.print("textToAdd -> " + textToAdd);
System.out.print("\n");
addToData(textToAdd); // adding the word to the linked list.
j++; // Taking the pointer one step futher again so it will be pointing to the first charcater of the next word
i = j;
}
_head = _head.mergeSort(_head);
}
public void addToData (String word)
{
if (_head == null)
_head = new WordNode (word, null);
else
{
WordNode currentNode = _head;
while (currentNode.getNext() != null)
currentNode = currentNode.getNext();
currentNode.setNext (new WordNode (word, null));
}
在添加所有單詞後,構造函數通過調用合併排序完成。
不需要在這裏複製合併排序。
有什麼建議嗎?
在此先感謝。
你如何閱讀列表?看起來你讀的最後一個單詞末尾有一個額外的字符,看起來是不可見的,或者''''''的最後一個字符是不同的。這就是爲什麼它排序正確,但它不會從列表中算作'equal()'到'other'。 – dasblinkenlight
嗨,感謝您的回覆,我在原始帖子中添加了更多信息。我期待在這裏獲得一些幫助。謝謝。 – qwerty
我在我的代碼中發現了這個錯誤。由於我是新成員,因此直到從原來的發佈時間過去8小時後,我才能回答自己的帖子。一旦間隔過期,我會發布修復。 – qwerty