資料結構 判斷鍊錶是否是回文結構

2021-09-18 01:42:29 字數 1073 閱讀 8688

什麼是回文:正讀,反讀都一樣的句子,字串,數字串等

例如: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,...