17.鍊錶中倒數第k個節點
題目:輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
思路:定義兩個指標,先讓乙個指標走到k-1的位置,讓後兩個指標同時走到最後
注意: 1.如果輸入的指標為空指標 需判空
2.如果鍊錶的節點數少於k,由於for迴圈中煉表會向前走k-1步
3.輸入的引數k為0
/*
struct listnode
};*/
class solution
//讓第二個指標指向頭節點
pbehind=plisthead;
//這是兩個指標相距k-1 然後一起往後走
while
(pahead->next!=nullptr)
return pbehind;}}
;
24.反轉鍊錶
題目:輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。
思路:定義3個指標 ,分別指向當前遍歷到的節點,以及它的前乙個節點和後乙個節點,當當前節點的下乙個等於空時,自然就到了尾節點(反轉後的頭節點)
/*
struct listnode
};*/
class solution
return preversedhead;}}
;
25.合併鍊錶
題目:輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則
思路:首先比較兩個鍊錶的頭指標,值小的先插入鍊錶
注意:**的魯棒性 程式一旦輸入空煉表就會崩潰 因此需要進行判空處理
/*
struct listnode
};*/
class solution
if(phead1->val>phead2->val)
if(phead1->val==phead2->val)
return pmergehead;}}
;
23.鍊錶中環的入口節點
題目:給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口節點,否則,輸出null。
思路:1.想求入口節點 就得先求環中的節點數目 要求環中的節點數目就得先定義兩個快慢指標 讓他倆相遇求出相遇節點
具體步驟:1.定義乙個快指標一次走兩步,定義乙個慢指標一次走一步 直到它倆相遇求出相遇的節點
2.求環的節點數目:在相遇的節點位置定義乙個新的節點,讓它從它的下乙個開始走直到碰到它自己 這時用乙個變數記錄次數,這個次數就是節點的數目
3.求環的入口節點:定義兩個指標指向頭節點,讓乙個指標先走到頭節點加k(環中的節點數目)的位置,然後讓這兩個指標同時走直到相遇,相遇點就是環的入口點。
注意:**的魯棒性
/*
struct listnode
};*/
class solution
//要求環的入口,先讓pnode1移動nodesinloop(節點的數目)步,
//然後讓兩個指標一起走,再次相遇點就是入口
//先移動pnode1,次數為環中節點的數目
pnode1=phead;
for(
int i=
0;i++i)
pnode1=pnode1->next;
//在移動pnodde1和pnode2
listnode *pnode2=phead;
while
(pnode1!=pnode2)
return pnode1;
}//存在環的前提下找到一快一慢兩個指標相遇的節點
listnode*
meetingnode
(listnode*phead)
return nullptr;}}
;
24.鍊錶中刪除重複的節點
題目:在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5
思路:首先遍歷整個列表,如果找到當前節點與下乙個節點相同,就是相同元素 把它倆刪除
具體步驟:1.首先定義乙個當前節點指標和乙個當前節點的前乙個節點的指標
2.遍歷所有節點並定義乙個bool變數來判斷節點是否要刪除
3.如果不刪除 則繼續往下走
4.如果刪除,那就刪除
/*
struct listnode
};*/
class solution
//如果是那就刪除
else
if(pprenode==nullptr)
*phead=pnext;
else
pprenode->next=pnext;
pnode=pnext;}}
}};
《劍指offer 之鍊錶題目
這幾天在看 劍指offer 寫的很好,跟july的各有千秋,更加注重歸納總結,筆試面試臨時抱佛腳,決定要啃下這其中的46道題目。ok,把每道題目自己實現,相同的歸成一類。這次把所有的與list相關的題目列出來。思路 從尾到頭列印list的話,考慮用stack先把各節點儲存起來,遍歷完以後再將stac...
劍指offer之反轉鍊錶
題目介紹 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。題目比較簡短,所以直接上 public class listnode public class solution listnode curnode head.next head.next null listnode resultnode hea...
劍指Offer之反轉鍊錶
題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。hint 請務必使用鍊錶 輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 0 n 1000 代表將要輸入的鍊錶的個數。輸入的第二行包含n個整數t 0 t 1000000 代表鍊錶元素。輸出 對應每個...