C 雙向鍊錶

2022-09-21 06:18:09 字數 1571 閱讀 4680

#includeusing namespace std;

templatestruct dnode

// 預設構造

dnode(t t, dnode *prev, dnode *next)

};// 雙向鍊錶基礎操作

templateclass doublelink

;// doublelink 建構函式

templatedoublelink::doublelink() : count(0)

// doublelink 析構函式

templatedoublelink::~doublelink()

// 刪除表頭

delete phead;

phead = null;

}// 返回結點數目

templateint doublelink::size()

// 返回鍊錶是否為空

templateint doublelink::is_empty()

// 獲取第 index 位置的結點

templatednode* doublelink::get_node(int index)

// 正向查詢

if (index <= count / 2)

return pindex;

}// 反向查詢

int j = 0;

int rindex = count - index - 1;

dnode* prindex = phead->prev;

while (j++ < rindex)

return prindex;

}// 獲取第index位置的結點的值

templatet doublelink::get(int index)

// 獲取第1個結點的值

templatet doublelink::get_first()

// 獲取最後乙個結點的值

templatet doublelink::get_last()

// 將結點插入到第index位置之前

templateint doublelink::insert(int index, t t)

// 將結點插入第乙個結點處

templateint doublelink::insert_first(t t)

// 將結點追加到鍊錶的末尾

// 刪除index位置的結點

templateint doublelink::del(int index)

// 刪除第乙個結點

templateint doublelink::delete_first()

// 刪除最後乙個結點

templateint doublelink::delete_last()

// 雙向鍊錶操作int資料

/*void int_test()}*/

class person

person(string name, int age)

};// 自定義資料型別

void person_test()

}int main()

C 雙向鍊錶

部落格介紹了c語言,以及c 的單向鍊錶。那麼我們今天介紹的雙向鍊錶,顧名思義,就是資料本身具備了左邊和右邊的雙向指標。雙向煉表相比較單向鍊錶,主要有下面幾個特點 1 在資料結構中具有雙向指標 2 插入資料的時候需要考慮前後的方向的操作 3 同樣,刪除資料的是有也需要考慮前後方向的操作 那麼,乙個非迴...

C 雙向鍊錶

includeusing namespace std typedef int datatype class linknode friend class slist private datatype data linknode prev linknode next class slist void p...

C 雙向鍊錶

考慮順序表中總是可以很方便地找到表元素的前驅和後繼,但單鏈表只能找後繼。如要找前驅,必須從表頭開始搜尋。為了克服這一缺點,可採用雙向鍊錶 double linked list 雙向鍊錶經常採用帶頭結點的迴圈鍊錶方式,如下圖所示。檢視動畫演示 圖7.10 帶表頭結點的雙向迴圈鍊錶 假設 指標p指向雙向...