給定乙個鍊錶,請判斷該鍊錶是否為回文結構。
[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 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造成記憶體空間的...