C 實現雙向鍊錶

2021-08-21 08:16:56 字數 2244 閱讀 8498

下面就是我們雙向鍊錶的基本原理。

這裡我們插入**案例:標頭檔案doublelink.h

#ifndef double_link_hxx

#define double_link_hxx

#include using namespace std;

//乙個節點

templatestruct dnode

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

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

templateclass doublelink

;templatedoublelink::doublelink() : count(0)

// 析構函式

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()

#endif

dlinktest.cpp

#include #include "doublelink.h"

using namespace std;

// 雙向鍊錶操作int資料

void int_test()

;//定義乙個陣列

cout << "\n開始測試 int資料" << endl;

// 建立雙向鍊錶

doublelink* pdlink = new doublelink();

pdlink->insert(0, 20); // 將 20 插入到第乙個位置

pdlink->insert_first(30); // 將 30 插入到第乙個位置

// 雙向鍊錶是否為空

cout << "is_empty()=" << pdlink->is_empty()

for (int i=0; iget(i) <

雙向鍊錶(C實現)

list.h ifndef list h define list h typedef struct node node typedef struct list list initlist int insertnode list l,void data,int size int deletenode ...

雙向鍊錶(c 實現)

雙向鍊錶與單鏈表有許多的相似之處,但是也有不同之處。雙向鍊錶與單鏈表主要的不同在於 雙向鍊錶可以從兩個方向進行遍歷,但是單鏈表只能從頭節點遍歷到尾節點,不能從尾節點遍歷到頭節點,對於鍊錶中一些插入和刪除等操作,雙向鍊錶較單鏈表更為簡單些。所以,雙向鍊錶有其存在的特殊意義。下面是通過c 來實現雙向鍊錶...

雙向鍊錶 C 實現

雙向鍊錶在類中的實現 include include includeusing namespace std typedef int datatype struct node node pnext node ppre int data class list list const list l else...