我想用下面的代碼,但結果總是true
;檢查一個鏈表是否是迴文(遞歸地)
public boolean isPallindrome(Link link, Link right) {
if (right == null)
return true;
if (!isPallindrome(link, right.getNext())) {
return false;
}
boolean isP1 = right.getData() == link.getData();
link = link.getNext();
return isP1;
}
呼叫: -
System.out.println(link1.isPallindrome(link1.getFirst(), link1.getFirst()));
我認爲罪魁禍首是從哪兒right
是針對null
檢查回報。它總是可能會返回true
。有人可以建議如何解決這個問題。
'abcba'是一個迴文,因爲'i'字符等於'n-i'字符。您需要在每個方法的調用中檢查兩個方向,但很難說「鏈接」是如何傳入的(甚至是它們代表的內容)。它顯示你正在檢查第i個字符等於第i個字符,這當然總是「真實的」。 – pickypg
您能否告訴我們Link定義的位置,或者顯示其定義?它是單鏈還是雙鏈表? –
您應該接受針對此問題的答案,因爲此頁面受到高度關注,並且如果問題已接受答案,人們可以輕鬆找到答案,請接受答案爲最高的選票,因爲它有助於更多人數 – Vihar