有關鍊錶的經典演算法

2021-07-05 16:29:53 字數 823 閱讀 6447

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.判斷單鏈表是否帶環?若帶環,求環的長度?求環的入口點?並計算每個演算法的時間複雜度 空間複雜度。思路 利用快慢指標,快指標一次走兩步,慢指標一次走一步,如快慢指標有相遇點,則一定有環。找到相遇點後,求環長度問題,可以轉換為求頭結點到 相遇點之間的長度問題。求入口點時,讓快指標回到頭結點,兩指標再...