我的網誌清單

2013年7月25日 星期四

C++ LIST 鏈結串列

這篇 原文連結
    http://www.codeofhonor.com/blog/avoiding-game-crashes-related-to-linked-lists

這篇作者寫了一個 介入式雙向鏈結串列

之前我在寫 C++ 時我的鏈結管理都是用傳統資料結構的作法
  寫一個  
     struct    然後用指標去關連 , 一層層接下去

如圖所示,但這樣的話有幾個問題是,當你在移除時,效率就不會太好,你必需先找到那一個
然後再移除他,然後再把線給接回來

但原本這樣在資料數量不多時,其實影響的程度也不會有多大影響
不過這次因為我是要用在多執行緒的部份,
所以可能的情況下會有幾個行為會有影響

A緒行緒,一直加入物件

B執行緒,一直不斷循環物件做事情

C.執行緒.判斷事件做刪除物件

在這樣的情況下我剛好在尋找解決方案

這位作者寫的  List.h 可以解決我的這部份問題


第一他刪除物件時,鏈結不用再手動接回來,只要直接 delete 就可以

再來是他處理相關鏈結的方法有支援滿多的

比如
TestClass *gg = Tss.Head();
這樣就可以取得串列的開頭

 employees.InsertTail(joe); 
這樣就可以把串列加在最尾巴

  delete honda;
刪除之後鏈結的關係不會中斷

沒有留言:

張貼留言