回答
我的猜測是它是一個linked list另外保留一個指向「current」元素的指針,例如用於遍歷列表。
如果你想確定你的教授究竟是什麼意思,看看.cpp文件,找出那裏實施的東西。
即與我此ADT^H^H^H ^對象類型的回味同意 - 列表+當前位置 - 回到我的數據結構類(80年代,唉)之前,該單詞被「偷」爲(僅)和SQL結果集緩衝區 – Roboprog 2012-11-20 17:54:41
CursorList是一個鏈接列表的數組版本。本質上,您有一個列表節點數組,但不是每個節點都包含指向鏈接列表中下一項的指針,數組中的每個節點元素都包含下一個節點元素的索引。因此,例如,如果我們想將5, 3, 2, 11, 9
存儲在鏈表中,我們將有5 -> 3 -> 2 -> 11 -> 9 -> NULL
。插入不是問題,因爲我們只是將最後一個指針更改爲指向插入的節點,並將插入的節點指向NULL
。刪除是一樣的,我們只是重新調整指針。然而,必須總是爲新節點動態分配(使用malloc或new)內存可能會有問題。
如果我們要存儲在CursorList中,我們首先聲明數組的最大大小,然後填充它。所以我們說listNode cursorList[10]
在這裏我們聲明listNode對象如下:
class listNode {
public:
listNode() {
data = -1;
next = NULL;
}
listNode(int inputData, &listNode inputNext) {
data = inputData;
next = inputNext;
}
private:
int data;
listNode* next;
};
所以填充陣列listNode對象,我們將有一些看起來像這樣經過:
現在如果我們要刪除5所有我們要做的就是更新next
索引。所以我們留下了這個:
一個問題出現了,我們怎麼知道該怎麼設置5的next
索引?那麼這就是Freelist(在@Justin Ethier的repsonse中提到)進來的地方。Freelist包含了陣列中仍然有空的索引。所以在創建CursorList之後,Freelist有0-9。當listNode對象被分配給數組的元素時,Freelist將刪除這些索引。當一個數字被刪除(例如上面的例子5)時,索引被添加回Freelist。如果我們想爲CursorList添加一個數字,我們只需更新適當元素的next
索引。
在遊標實現中,我們自己構建存儲池 ,將未使用的節點存儲在存儲在數組中的 鏈接列表中。
在C和C++,存儲池是由一組由語言提供 庫函數來管理。 在開始執行時,存儲的適當大的池是從操作系統獲取 。 當程序需要一個新的節點,從 池由語言庫函數獲得的存儲。 如果存儲空間不足是在池中可用,庫請求從操作系統 額外的池空間。 當存儲由程序,語言庫函數 它返回到存儲池釋放。 光標執行,通常會在系統中作爲一個數組獲得固定 的存儲量,並 提供類似於新的功能和刪除的 應用程序使用
- 1. Ruby背景:什麼是鏈接列表?
- 2. 鏈接列表的缺點是什麼?
- 3. C++鏈接列表
- 4. C++鏈接列表
- 5. c/C++鏈接列表
- 6. 排序鏈接列表的最佳方式是什麼?
- 7. Flash 10中的顯示列表是什麼?陣列?鏈接列表?
- 8. C#排序鏈接列表
- 9. C#多路鏈接列表
- 10. C++上的鏈接列表
- 11. 鏈接列表錯誤,C++
- 12. 鏈接列表C錯誤
- 13. 通用C++鏈接列表
- 14. 鏈接列表排序C
- 15. 打印鏈接列表 - C++
- 16. 鏈接列表頭C++
- 17. C編程:鏈接列表
- 18. 鏈接列表問題C++
- 19. C++鏈接列表行爲
- 20. C++鏈接列表返回
- 21. 鏈接列表崩潰,c
- 22. 我是C++新手。請幫助我鏈接列表(添加什麼功能)?
- 23. 什麼是Mysql鏈接?
- 24. 什麼是鏈接窗口?
- 25. 什麼是鏈接列表中的頭Java實現
- 26. 鼠標光標改變Javascript - 鏈接DIV
- 27. 文檔光標的路徑是什麼?
- 28. 什麼是MongoDB中的光標?
- 29. 什麼是mysql緩衝光標w.r.t python mysql連接器
- 30. 什麼是C++中的WinXP控制檯光標控制字符?
尤瓦,你應該通過看到的接口開始文件已經暴露。也就是說,閱讀它,查看哪些公共方法,如何使用它們等等。從名稱看,它似乎非常確定它實現了鏈接列表數據結構,即可以插入,刪除,遍歷的鏈接列表數據結構, 之類的東西。測試一下。 – 2010-04-07 03:27:51