1. 程式人生 > 其它 >連結串列的會迴文結構。

連結串列的會迴文結構。

技術標籤:c語言c語言資料結構連結串列

題目描述
對於一個連結串列,請設計一個時間複雜度為O(n),額外空間複雜度為O(1)的演算法,判斷其是否為迴文結構。

給定一個連結串列的頭指標A,請返回一個bool值,代表其是否為迴文結構。保證連結串列長度小於等於900。

測試樣例:
1->2->2->1
返回:true
在這裡插入圖片描述
程式碼

struct ListNode*reverseList(struct ListNode*head)
{
    struct ListNode*cur =head;
    struct ListNode*newhead =NULL;
    while
(cur) { struct ListNode*next=cur->next; cur->next=newhead; newhead =cur; cur=next; } return newhead; } class PalindromeList { public: bool chkPalindrome(ListNode* A) { struct ListNode*fast=A,*slow=A; while(fast &&
fast->next) { fast=fast->next->next; slow=slow->next; } struct ListNode*part1=A,*part2=reverseList(slow); while(part1 && part2) { if(part1->val != part2->val) { return false;
} else{ part1=part1->next; part2=part2->next; } } return true; // write code here } };