判斷鍊錶是否回文結構(c )

2021-09-11 05:42:44 字數 1045 閱讀 6132

這是一道基礎的鍊錶知識,判斷鍊錶是否回文結構。在這裡我使用了快慢指標法。

慢指標: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...