/* 單鏈式儲存結構中,只有乙個指向後繼的指標,從某點出發,只能順序的訪
為o(1),訪問上乙個結點為o(n)而雙向鍊錶可以克服這個問題
雙向鍊錶的結點存在乙個資料域和兩個指標域:乙個指向前驅乙個指向後繼 */
#ifndef doublelinklist_h
#define doublelinklist_h
typedef int elemtype; //鍊錶的資料型別
typedef struct nodelinknode,*linklist;
void initlist(linklist *l); //初始化鍊錶
void createlist(linklist l); //建立乙個雙向鍊錶
void insertlist(linklist l,int i,elemtype e); //在雙向鍊錶的第i個位置插入元素
void deletelist(linklist l,int i); //刪除雙向鍊錶的第i個位置的元素
void destroylist(linklist l); //銷毀雙向鍊錶
//bool find(linklist l,elemtype e); //在雙向鍊錶中查詢元素看是否存在
void print(linklist l); //輸出雙向鍊錶
int getlistlength(linklist l); //獲取鍊錶的長度
#endif //doublelinklist_h
#include "doublelinklist.h"
#include #include void initlist(linklist *l) //初始化雙向鍊錶
void createlist(linklist l) //建立乙個雙向鍊錶 }}
void insertlist(linklist l,int i,elemtype e) //在鍊錶的第i個位置插入元素e
}void deletelist(linklist l,int i) //刪除鍊錶第i個位置的元素
int getlistlength(linklist l) //返回鍊錶的長度
return i;
}void destroylist(linklist l) //銷毀鍊錶
free(l);
}void print(linklist l) //列印鍊錶
printf("\n");
}
#include "doublelinklist.h"
#include int main()
雙向鍊錶實現
template class link link link pre null,link ne null void operator new size t void operator delete void ptr template link link freelist null template v...
雙向鍊錶實現
雙向鍊錶的應用背景主要是單向鍊錶只能順序訪問,逆序訪問單向鍊錶 尤其是較大的單向鍊錶是一件極其費時費力的工作 相比於單向鍊錶,雙向鍊錶增加了乙個域,這個域裡面增加了乙個指向前驅節點的指標,使得整個鍊錶可以順序訪問或者逆序訪問,來去自如 定義的雙向鍊錶的標頭檔案,裡面包含了雙向鍊錶的宣告和資料型別的定...
實現雙向鍊錶
雙向鍊錶和單向鍊錶相比更加靈活,它的每乙個元素除了本身的值以為擁有兩個指標,分別指向上乙個和下乙個節點。維護成本上要高於單向鍊錶。鍊錶的大部分操作依賴於遍歷,這一方面雙向鍊錶會效率會好一些,可以根據查詢下標的位置從而選擇從煉表頭開始遍歷還是從鍊錶尾開始遍歷。返回元素個數 public intsize...