這是一道基礎的鍊錶知識,判斷鍊錶是否回文結構。在這裡我使用了快慢指標法。
慢指標:p1每次走一步 p1->next
快指標:p1每次走兩步 p1->next->next
主要想法:當p2走到末尾時,p1只走了整個行程的一半,只要將剩下部分逆序就可以進行判斷了
當p2為空時,p1剛好走到了中間的位置,程式如下
listnode* p1=a;
listnode* p2=a; //賦值給p1和p2
將沒有遍歷完的p1逆序
listnode* temp;
listnode* newhead=null; //定義兩個空節點
將逆序後的newhead和a做對比,不同則返回錯誤,遍歷直到newhead結束
while (newhead!=null)
newhead=newhead->next;
a=a->next;
}總的**
class palindromelist
listnode* temp;
listnode* newhead=null;
while (p1!=null)
while (newhead!=null)
newhead=newhead->next;
a=a->next;
}return true;}};
判斷鍊錶是否為回文結構
給定乙個鍊錶的頭節點 head,請判斷該鍊錶是否為回文 正反結構相同 結構。如果鍊錶長度為 n,時間複雜度達到 o n 額外空間複雜度達到 o 1 參考 程式設計師 面試指南 放入棧,時間複雜度o n 空間複雜度o n bool ispalindrome1 node head while null ...
鍊錶回文結構判斷
鍊錶回文結構判斷較簡單的做法是利用棧儲存鍊錶逆序序列,之後與列表正序序列 比較,如果一致,則說明是回文結構 這樣時間複雜度o n 空間複雜度o n 下面這種方法時間複雜度o n 空間複雜度o 1 其基本思路是把鍊錶右半部分反轉,然後同時從原始鍊錶的首尾同時向中間遍歷,比較每乙個位置對應的value,...
OJ 判斷鍊錶是否為回文結構
思路 先找到鍊錶的中間節點,然後將鍊錶從中間節點之後的後半段反轉 然後將前半段與後半段逐一進行比較。鍊錶的建立 struct listnode bool ispalindrome struct listnode head 將後半段進行反轉 struct listnode newhead null s...