鍊錶?陣列?合二為一

2021-09-24 15:15:07 字數 983 閱讀 3782

大家都喜歡用陣列,因為陣列方便。

但也有一些人喜歡用鍊錶,因為鍊錶能利用零散的記憶體空間。

c++提供了鍊錶和陣列合二為一的可能——類和過載運算子。

把鍊錶的頭指標作為類的成員,有參構造的時候,建立鍊錶;

過載[ ]運算子,使之像陣列;

但是永遠不要忘記鍊錶和陣列最大的不同——鍊錶元素的記憶體單元是不連續的,因此無法通過記憶體的加減運算得到下乙個元素的位址,只能通過指向下乙個結點的指標來訪問。

#includeusing namespace std;

class listarray

//無參建構函式,後面要用

listarray(int n) //帶參建構函式,引數為陣列長度

} listarray& operator(int n) //過載運算子,和陣列一樣的訪問方式

return (*tmp);

}};int main()

{ listarray list(10);

for(int i=0;i<10;i++)

list[i].data=i*i;

for(int i=0;i<10;i++)

cout

得到的輸出當然是沒問題的

但是花的時間有點多。

上面只是簡單地提供了鍊錶與陣列結合的實現,這很有意思。

但是不可忽視的是,這樣的結合方式在執行時極其耗費cpu。

因為每訪問乙個結點都是從第乙個結點開始的,訪問第n個結點需要依次遍歷過去,才能得到第n個結點的位址。

時間複雜度為…………

額,不好意思我不會算,不過我想應該和氣泡排序一樣吧。

RAdam和LookAhead合二為一

參考 我訓練的yolov3,開始兩個epoch都不收斂 optimizer ranger params,weight decay config optimizer weight decay geoffrey hinton 和他的團隊發表了一篇關於深度神經網路優化器的 介紹了一種新的優化器 looka...

惠普研發記憶體硬碟合二為一的計算機

全球電腦產業夕陽西下,pc苟延殘喘在智慧型手機的陰影之中,老牌電腦大廠惠普,首當其衝。不過,惠普並不認同電腦或者計算機這種產品將作古。惠普這一計畫十分巨集大,涉及全新的電腦或伺服器硬體,全新的作業系統,新的電腦,可能不再使用微軟的windows作業系統。據報道,這種全新的計算機在惠普公司內部的研發代...

鍊錶 判斷乙個鍊錶是否為回文鍊錶

思路1 找到中間節點然後把後面的翻轉,需要斷開鍊錶 然後比較和頭節點開始的前段,最後要是後半段的游標可以走到最後說明是回文否則不是 思路2 整體翻轉比較 思路3 借助乙個棧存放前半段的元素,然後和後半段的比較 public boolean ispalindrome listnode head lis...