陣列模擬實現鍊錶

2021-10-07 13:34:48 字數 809 閱讀 7385

為什麼不寫成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 ...