大家都喜歡用陣列,因為陣列方便。
但也有一些人喜歡用鍊錶,因為鍊錶能利用零散的記憶體空間。
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...