什麼是回文:正讀,反讀都一樣的句子,字串,數字串等
例如:abcba,abba都是回文。
思想:
具體實現:
定義變數
(1)定義原鍊錶長度的一半,halflen
(2)定義乙個變數 cur 表示當前變數;
(3)定義乙個變數mid 表示中間結點,
(4)定義乙個變數 newmid表示反轉鍊錶
找原鍊錶的中間結點
(1)求鍊錶的長度,定義乙個函式求鍊錶長度length();
(2)求出鍊錶的一半長度,作為迴圈條件,找到中間結點
鍊錶反轉
找到中間結點之後將該鍊錶反轉,即將mid鍊錶中的所有結點頭插到乙個新的鍊錶newmid中;
將原鍊錶 與 反轉鍊錶進行比較,只要有val值不等的,肯定不是回文結構,返回false;否則迴圈繼續;
比較結束之後,若沒有返回false,則肯定就是回文,返回true。
**實現:
package www.fanfan.com;
/** * author:kelly_fanfan
*/public
class
nowcode_回文
}//回文
//1.先找到中間結點
//2.把中間結點之後的結點鍊錶反轉
public
class
palindromelist
return len;
}public
boolean
chkpalindrome
(listnode a)
while
(mid != null)
while
(newmid != null)
else
}return
true;}
}}
判斷鍊錶是否為回文結構
給定乙個鍊錶的頭節點 head,請判斷該鍊錶是否為回文 正反結構相同 結構。如果鍊錶長度為 n,時間複雜度達到 o n 額外空間複雜度達到 o 1 參考 程式設計師 面試指南 放入棧,時間複雜度o n 空間複雜度o n bool ispalindrome1 node head while null ...
判斷鍊錶是否回文結構(c )
這是一道基礎的鍊錶知識,判斷鍊錶是否回文結構。在這裡我使用了快慢指標法。慢指標 p1每次走一步 p1 next 快指標 p1每次走兩步 p1 next next 主要想法 當p2走到末尾時,p1只走了整個行程的一半,只要將剩下部分逆序就可以進行判斷了 當p2為空時,p1剛好走到了中間的位置,程式如下...
鍊錶回文結構判斷
鍊錶回文結構判斷較簡單的做法是利用棧儲存鍊錶逆序序列,之後與列表正序序列 比較,如果一致,則說明是回文結構 這樣時間複雜度o n 空間複雜度o n 下面這種方法時間複雜度o n 空間複雜度o 1 其基本思路是把鍊錶右半部分反轉,然後同時從原始鍊錶的首尾同時向中間遍歷,比較每乙個位置對應的value,...