5_9 체인 테이블의 회문 구조

955 단어
함수를 작성해서 체인 테이블이 회문인지 확인하십시오.
체인 테이블ListNode* pHead를 지정하면 체인 테이블이 회문인지 여부를 나타내는 bool을 반환합니다.
테스트 예: 입력: {1,2,3,2,1}반환:true입력: {1,2,3,2,3}반환:false
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class Palindrome {
public:
    bool isPalindrome(ListNode* pHead) {
        // write code here
        //            
        ListNode *p1 = pHead, *p2 = pHead;
        stack stk;
        while(p2->next){
            stk.push(p1->val);
            if(p2->next->next){
                p2 = p2->next->next;
                p1 = p1->next;
            }else{
                p2 = p2->next;
            }
        }
        p1 = p1->next;
        while(p1){
            if(p1->val != stk.top()){
                return false;
            }
            p1 = p1->next;
            stk.pop();
        }
        return true;
    }
};

좋은 웹페이지 즐겨찾기