<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                每個鏈表節點使用一個?`adlist.h/listNode`?結構來表示: ~~~ typedef struct listNode { // 前置節點 struct listNode *prev; // 后置節點 struct listNode *next; // 節點的值 void *value; } listNode; ~~~ 多個?`listNode`?可以通過?`prev`?和?`next`?指針組成雙端鏈表, 如圖 3-1 所示。 ![](https://box.kancloud.cn/2015-09-13_55f50fad082e3.png) 雖然僅僅使用多個?`listNode`?結構就可以組成鏈表, 但使用?`adlist.h/list`?來持有鏈表的話, 操作起來會更方便: ~~~ typedef struct list { // 表頭節點 listNode *head; // 表尾節點 listNode *tail; // 鏈表所包含的節點數量 unsigned long len; // 節點值復制函數 void *(*dup)(void *ptr); // 節點值釋放函數 void (*free)(void *ptr); // 節點值對比函數 int (*match)(void *ptr, void *key); } list; ~~~ `list`?結構為鏈表提供了表頭指針?`head`?、表尾指針?`tail`?, 以及鏈表長度計數器?`len`?, 而?`dup`?、?`free`?和?`match`?成員則是用于實現多態鏈表所需的類型特定函數: * `dup`?函數用于復制鏈表節點所保存的值; * `free`?函數用于釋放鏈表節點所保存的值; * `match`?函數則用于對比鏈表節點所保存的值和另一個輸入值是否相等。 圖 3-2 是由一個?`list`?結構和三個?`listNode`?結構組成的鏈表: ![](https://box.kancloud.cn/2015-09-13_55f50fb39b6cb.png) Redis 的鏈表實現的特性可以總結如下: * 雙端: 鏈表節點帶有?`prev`?和?`next`?指針, 獲取某個節點的前置節點和后置節點的復雜度都是?![O(1)](https://box.kancloud.cn/2015-09-13_55f50fb59693b.png)?。 * 無環: 表頭節點的?`prev`?指針和表尾節點的?`next`?指針都指向?`NULL`?, 對鏈表的訪問以?`NULL`?為終點。 * 帶表頭指針和表尾指針: 通過?`list`?結構的?`head`?指針和?`tail`?指針, 程序獲取鏈表的表頭節點和表尾節點的復雜度為?![O(1)](https://box.kancloud.cn/2015-09-13_55f50fb59693b.png)?。 * 帶鏈表長度計數器: 程序使用?`list`?結構的?`len`?屬性來對?`list`?持有的鏈表節點進行計數, 程序獲取鏈表中節點數量的復雜度為?![O(1)](https://box.kancloud.cn/2015-09-13_55f50fb59693b.png)。 * 多態: 鏈表節點使用?`void*`?指針來保存節點值, 并且可以通過?`list`?結構的?`dup`?、?`free`?、?`match`?三個屬性為節點值設置類型特定函數, 所以鏈表可以用于保存各種不同類型的值。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看