牛客網數據結構,鏈表的迴文結構(C語言)

對於一個鏈表,請設計一個時間複雜度爲O(n),額外空間複雜度爲O(1)的算法,判斷其是否爲迴文結構。給定一個鏈表的頭指針A,請返回一個bool值,代表其是否爲迴文結構。保證鏈表長度小於等於900。

在這裏插入圖片描述

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
public:
    bool chkPalindrome(ListNode* A) {
       {
           ListNode* copyA = NULL;
           ListNode* cur = A;
           while(cur != NULL)
           {
               //拷貝節點
               ListNode* copyCur = (ListNode*)malloc(sizeof(ListNode));
               copyCur -> val = cur->val;
               //頭插
               copyCur->next =copyA;
               copyA =copyCur;
               cur = cur->next;
           }
           cur = A;
           ListNode* copyCur = copyA;
           bool ret = true;
           while(cur !=NULL)
           {
               if(cur->val != copyCur->val)
               {
                   ret =false;
                   break;
               }
               cur = cur->next;
               copyCur = copyCur->next;
           }
               copyCur = copyA;
               while(copyCur)
               {
                   ListNode* next = copyCur->next;
                   free(copyCur);
                   copyCur = next;
               }
               return ret;
           }
        
    }
     
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章