——單鏈表反轉(兩種)(劍指offer,題16)
順序的ok
遞迴的nok
——查詢單鏈表中的中間結點
兩個指標,乙個走一步,乙個走2步,走2步的那個null,則停止
ok——
查詢單鏈表中的倒數第k個結點(劍指offer,題15)
兩個指標 ,乙個先走,再同時走,先走的那個null了,則停止
ok——合併兩個有序的單鏈表,合併之後的鍊錶依然有序【出現頻率高】(劍指offer,題17)
遞迴[cpp]
view plain
copy
node *listmerge1(node *head1,node *head2)
//採用遞迴的方法實現
else
return
head;
} ok
——從尾到頭列印單鏈表(劍指offer,題5)
遞迴 、棧
ok——判斷兩個單鏈表相交的第乙個交點(劍指offer,題37)
a b兩個鍊錶,長的先走 delta length 步,然後共同走,且判斷指標是否相同,相同者既是
ok——判斷兩個鍊錶是否相交
直接看最後乙個節點 o(m+n)
ok——給出一單鏈表頭指標phead和一節點指標ptobedeleted,o(1)時間複雜度刪除節點ptobedeleted: delete(劍指offer,題13)
n+1 複製到n,n.next=(n+1).next
ok以上摘自:
單鏈表面試題彙總(1)
逆序列印單鏈表 void ptinttailtohead slistnode phead 刪除乙個無頭結點的非尾節點 void deletenottail slistnode pos 約瑟夫環 slistnode circle slistnode phead,int k tail cur tail ...
鏈表面試題
不改變鍊錶結構,從尾到頭列印單鏈表 遞迴實現 void printlistrevers recursively plist phead printf d phead data 當鍊表非常長的時候,遞迴實現的會導致函式呼叫層級很深,可能導致呼叫棧溢位。用棧不會出現此類情況,顯然用棧實現 的魯棒性會好一...
鏈表面試題
從尾到頭列印單鏈表 棧 遞迴 從尾到頭列印鍊錶 includevoid printtailtohead listnode head while s.empty 空間複雜度o n void printtailtoheadr listnode head cout data 刪除乙個無頭單鏈表的非尾結點 ...