面試13之檢查鍊錶是否為回文

2021-07-31 00:12:08 字數 1271 閱讀 8417

題目描述

請編寫乙個函式,檢查鍊錶是否為回文。

給定乙個鍊錶listnode* phead,請返回乙個bool,代表鍊錶是否為回文。

測試樣例:

返回:true

返回:false

#includeusing namespace std;

#includestruct listnode };

// 方式一:用乙個輔助棧,時間複雜度o(n),空間複雜度o(n)

/*bool ispalindrome(listnode *phead)

pcur = phead;

while (pcur)

return true;}*/

//方式二,將鍊錶的後半部分逆置判斷,時間複雜度o(n),空間複雜度o(1).

void reverse(listnode *&phead)

phead->next = null;

phead = ppre;

}bool ispalindrome(listnode *phead)

//逆置後半部分鍊錶

//如1->2->3->2->1 逆置2->1 變成1->2

//如1->2->2->1 逆置2->1 變成1->2

listnode *preversehead = pslow->next;

reverse(preversehead);

listnode *p1 = preversehead ;

listnode *p2 = phead;

//後半部分鍊錶肯定要小於或等於前半部分鍊錶,所以用後半部分鍊錶來判斷。

while(p1)

//判斷完後將鍊錶還原

reverse(preversehead);

pslow->next = preversehead;

return true;

}void test()

{ listnode *p1 = new listnode(1);

listnode *p2 = new listnode(2);

listnode *p3 = new listnode(3);

listnode *p4 = new listnode(4);

listnode *p5 = new listnode(5);

p1->next = p2;

p2->next = p3;

p3->next = p4;

p4->next = p5;

cout << ispalindrome( p1) <

檢查鍊錶是否為回文

請編寫乙個函式,檢查鍊錶是否為回文。給定乙個鍊錶listnode phead,請返回乙個bool,代表鍊錶是否為回文。演算法實現如下 public class listnode class result public class palindrome result result ispalindro...

檢查鍊錶是否為回文 python實現

coding utf 8 題目描述 請編寫乙個函式,檢查鍊錶是否為回文。給定乙個鍊錶listnode phead,請返回乙個bool,代表鍊錶是否為回文。測試樣例 返回 true 返回 false author chimuuu class listnode def init self,x self....

Python判斷是否為回文鍊錶

突然發現python語法的優美和簡潔,清爽,不拖泥帶水。龜叔 guido van rossum 就說 除了不能生孩子,python真的能幹很多事。definition for singly linked list.如果位元組面試 時間複雜度o n 空間複雜度o 1 class listnode de...