為什麼不寫成struct?
因為寫法麻煩,效率低。
體現在每次需要new乙個記憶體,new的過程非常耗時,可能1s的時間會畫在new上面
直接上**,看著**解釋好了
const
int n =
1e5+5;
int a[n]
,idx,head;
// 事先申請一塊大小為 n 的int型別的記憶體
// idx++ 模擬申請一塊記憶體,idx-1表示鍊錶長度
// 這些節點可能 邏輯上相鄰,物理上也相鄰。
int nxt[n]
;// nxt[i] 記錄著i號節點的下乙個位置,同理可以寫 prv[n]陣列
void
init()
void
add_to_head
(int x)
// 把 x 插入到 i+1 的位置(i 的後面),因為不知道邏輯上 i-1 的位置在**。
void
insert
(int i,
int x)
// 同理,刪除i+1號位置的節點
void
remove
(int i)
大概思路就是這樣的嘛,只是我寫的也比較簡略。
如果不想背,或者正常開發,可以用c++ stl裡的list,底層是雙端鍊錶。
#include
list<
int> a;
stl的底層是寫的很好的,所以幾乎可以不擔心效率問題。 模擬實現鍊錶
該鍊錶實現的功能 1.指定位置之前插入元素 2.列印鍊錶 3.刪除指定元素 4.刪除所有出現的指定元素 5.查詢指定元素 6.對鍊錶進行氣泡排序 7.頭插 8.頭刪 9.尾插 10.尾刪 11.銷毀鍊錶 下面進行分布詳解 plinknode buynode datatype x 為新增節點開闢空間,...
陣列模擬鍊錶的實現
pragma once 原理很簡單,將陣列的元素看成是鍊錶,或者說是陣列空間起到了記憶體池的作用。然後用兩個結點表示 當前使用 空閒的鍊錶 對效率問題上的一些說明 增 這個無需說,鍊錶直接秒殺。刪 類裡提供的是乙個element結構,裡面包含了使用者的資料。如果你想保持常量的效率 在一些資料介面提供...
c 利用模版模擬實現鍊錶list
最近在學習 資料結構與演算法分析c 描述第三版 時,書中的list在編譯時會報錯,我在這裡已經進行了修改,而且為了方便 把內部類放在類外部實現,經過了實際的測試。具體如下 include using namespace std template typename object class list ...