常考資料結構與演算法 判斷乙個鍊錶是否為回文結構

2021-10-21 10:18:43 字數 984 閱讀 7830

給定乙個鍊錶,請判斷該鍊錶是否為回文結構。

[1,2,2,1]
true
雙指標,快指標一次走兩步,慢指標一次走一步,快指標走完,慢指標走到中點。然後將中點開始後面節點逆序,比較完之後再將還原該鍊錶。

例如:1->3->5->3->1,慢指標會到達5處,然後右半部分逆序,將5的next指向null,將後面3的next指向5,將1的next指向3,得到1->3->5<3<1,乙個節點從head開始遍歷,乙個節點從尾節點開始遍歷,比較,一直到中點位置停,若相同,則為true,否則為false。

public class ispailme 

/***

* @param head listnode類 the head

* @return bool布林型

*/public boolean ispail (listnode head)

listnode fast = head;

listnode slow = head;

while(null != fast && fast.next != null)

// 1 2 3 2 1

// 從slow出開始逆序鍊錶後面的節點

listnode temphead = new listnode();

listnode temp = slow;

// 逆序鍊錶

while(null != temp)

listnode first = head;

temphead = temphead.next;

while(null != first && temphead != null && first.val == temphead.val)

if(null == temphead)

return false;

}}class listnode

listnode(int val)

}

面試常考資料結構與演算法

資料結構部分 1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造...

面試常考資料結構與演算法

資料結構部分 1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造...

面試常考資料結構與演算法

1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造成記憶體空間的...