linkedlist reversesinglylinkedlist(linkedlist list)
////初始化newlist
// newlist->
data
=list
->
data;
newlist->next =
null;
////依次將list的第乙個結點放到newlist的第乙個結點位置
//while (list
->next !=
null)
////原頭結點應該釋放掉,並返回新頭結點的指標
// free(list);
return newlist;
}
node *unite_sort(node *head1, node *head2)
if (null
== head2)
if (head1->
data
< head2->
data)//找出最小的那個data
else
for (cur = head; head1 !=
null
&& head2 !=
null; )
else
} cur->next = (null
== head1) ? head2 : head1;//head1和head2至少有乙個為空時,剩下的那個鍊錶直接放在cur->next
return head;
} **:
經典演算法 鍊錶翻轉
比如說乙個鍊錶先是這樣,40 5 0 60 反過來就應該是 60 0 5 40 函式如下 static void reverse struct node head ref head ref prev 代表著最後乙個 傳進去的引數是煉表頭 原理就是把鍊錶都反過來指,最後乙個指向倒數第二個,方法是通過上...
有關鍊錶的經典面試題 (一)
1.比較順序表和煉表的優缺點,說說它們分別在什麼場景下使用?順序表 記憶體中位址連續,優點是隨機訪問比較便捷快速,建立也比較簡單,隨機查詢比較方便,可以直接給出下標,排序也方便 簡單。缺點 不夠靈活,刪除增加的工作量叫大,比較麻煩,長度不能實時變化 適用場景 適用於需要大量訪問元素的 而少量增添 刪...
有關鍊錶的經典面試題(二)
1.判斷單鏈表是否帶環?若帶環,求環的長度?求環的入口點?並計算每個演算法的時間複雜度 空間複雜度。思路 利用快慢指標,快指標一次走兩步,慢指標一次走一步,如快慢指標有相遇點,則一定有環。找到相遇點後,求環長度問題,可以轉換為求頭結點到 相遇點之間的長度問題。求入口點時,讓快指標回到頭結點,兩指標再...