思路:先找到鍊錶的中間節點,然後將鍊錶從中間節點之後的後半段反轉;然後將前半段與後半段逐一進行比較。
//鍊錶的建立
struct listnode
;bool ispalindrome
(struct listnode* head)
//將後半段進行反轉
struct listnode* newhead =
null
;struct listnode* next =
null
;struct listnode* cur = one;
while
(cur)
//逐一比較,是回文結構返回true;不是則返回false。
while
(head&&newhead)
return true;
}
判斷鍊錶是否為回文結構
給定乙個鍊錶的頭節點 head,請判斷該鍊錶是否為回文 正反結構相同 結構。如果鍊錶長度為 n,時間複雜度達到 o n 額外空間複雜度達到 o 1 參考 程式設計師 面試指南 放入棧,時間複雜度o n 空間複雜度o n bool ispalindrome1 node head while null ...
判斷是否為回文結構
法一 棧 時間o n 空間o n public static boolean ispanlindrome node head second second.next second指向後半部分第乙個元素 stackstack new stack while second null while stack...
判斷鍊錶是否回文結構(c )
這是一道基礎的鍊錶知識,判斷鍊錶是否回文結構。在這裡我使用了快慢指標法。慢指標 p1每次走一步 p1 next 快指標 p1每次走兩步 p1 next next 主要想法 當p2走到末尾時,p1只走了整個行程的一半,只要將剩下部分逆序就可以進行判斷了 當p2為空時,p1剛好走到了中間的位置,程式如下...