題目描述
請編寫乙個函式,檢查鍊錶是否為回文。
給定乙個鍊錶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...