看動畫學演算法之 doublyLinkedList

2021-10-08 13:50:13 字數 364 閱讀 3980

今天我們來學習一下複雜一點的linkedlist:doublylinkedlist。

和linkedlist相比,doublylinkedlist中的節點除了next指向下乙個節點之外,還有乙個prev之前的乙個節點。所以被稱為doublylinkedlist。 doublylinkedlist是乙個雙向鍊錶,我們可以向前或者向後遍歷list。

今天我們來學習一下doublylinkedlist的基本操作和概念。

doublylinkedlist需要乙個head節點,我們看下怎麼構建:

看動畫學演算法之 遞迴和遞迴樹

在之前我們介紹的很多資料結構和演算法都用到了遞迴,遞迴非常容易理解,用途也很廣泛,但是有乙個缺點就是需要儲存棧的狀態,如果遞迴次數太多會造成棧溢位的問題。本文將會講解常見的棧的應用,並使用遞迴樹形象的展示其遞迴的過程。遞迴樹是迭代過程的一種影象表述。遞迴樹往往被用於求解遞迴方程,它的求解表示比一般的...

看動畫學演算法之 環檢測演算法 弗洛伊德的兔子和烏龜

環檢測應該是乙個非常常見的演算法問題,怎麼判斷是否有環的問題呢?乙個很簡單的做法就是用hashset來儲存要遍歷的資料,如果出現了重複就知道這個鍊錶是有環的。但是這個方法需要儲存遍歷過的所有的元素,所以其空間複雜度是o n 有沒有什麼方法可以不用儲存之前的元素也能夠判斷是否有環呢?來看看弗洛伊德的兔...

c 排序陣列下標 看動畫學演算法之 排序 基數排序

之前的文章我們講了count排序,但是count排序有個限制,因為count陣列是有限的,如果陣列中的元素範圍過大,使用count排序是不現實的,其時間複雜度會膨脹。而解決大範圍的元素排序的辦法就是基數排序。什麼是基數排序呢?考慮一下,雖然我們不能直接將所有範圍內的數字都使用count陣列進行排序,...