/*
* 作 者:劉光輝
* 完成日期:2023年10月12日
*問題描述:演算法庫包括兩個檔案:標頭檔案:dlinklist.h,包含定義順序表資料結構的**、巨集定義、要實現演算法的函式的宣告;原始檔:dlinklist.cpp,包含實現各種演算法的函式的定義請採用程式的多檔案組織形式,建立如上的兩個檔案,另外再建立乙個原始檔(如main.cpp),編制main函式,完成相關的測試工作。
*輸入描述:無
*程式輸出:新建的雙鏈表。
標頭檔案dlinklist.h的**:
#include #include //迴圈雙鏈表基本運算函式
typedef int elemtype;
typedef struct dnode //定義雙鏈表結點型別
cdlinklist;
void createlistf(cdlinklist *&l,elemtype a,int n); //頭插法建立迴圈雙鏈表
void createlistr(cdlinklist *&l,elemtype a,int n); //尾插法建立迴圈雙鏈表
void initlist(cdlinklist *&l); //初始化迴圈雙鏈表
void destroylist(cdlinklist *&l); //銷毀
bool listempty(cdlinklist *l); //判斷是否為空
int listlength(cdlinklist *l); //求鍊錶長度
void displist(cdlinklist *l); //輸出鍊錶
bool getelem(cdlinklist *l,int i,elemtype &e); //取鍊錶元素
int locateelem(cdlinklist *l,elemtype e); //查詢元素
bool listinsert(cdlinklist *&l,int i,elemtype e); //插入節點
bool listdelete(cdlinklist *&l,int i,elemtype &e); //刪除節點
原始檔dlinklist.cpp的**:
//迴圈雙鏈表基本運算函式
#include "dlinklist.h"
void createlistf(cdlinklist *&l,elemtype a,int n) //頭插法建立迴圈雙鏈表
s=l->next;
while (s->next!=null) //查詢尾結點,由s指向它
s=s->next;
s->next=l; //尾結點next域指向頭結點
l->prior=s; //頭結點的prior域指向尾結點
}
void createlistr(cdlinklist *&l,elemtype a,int n) //尾插法建立迴圈雙鏈表
r->next=l; //尾結點next域指向頭結點
l->prior=r; //頭結點的prior域指向尾結點
}
void initlist(cdlinklist *&l) //初始化迴圈雙鏈表
void destroylist(cdlinklist *&l) //銷毀
free(p);
}
bool listempty(cdlinklist *l) //判斷是否為空
int listlength(cdlinklist *l) //求鍊錶長度
return(i);
}
void displist(cdlinklist *l) //輸出鍊錶
printf("\n");
}
bool getelem(cdlinklist *l,int i,elemtype &e) //取鍊錶元素
else //i不為1時
if (p==l)
return false;
else
}
}
else //雙鏈表為空表時
return 0;
}
int locateelem(cdlinklist *l,elemtype e) //查詢元素
if (p==null)
return(0);
else
return(n);
}
bool listinsert(cdlinklist *&l,int i,elemtype e) //插入節點
else if (i==1) //原雙鏈表不為空表但i=1時
else
if (p==l) //未找到第i-1個結點
return false;
else //找到第i-1個結點*p
}
}
bool listdelete(cdlinklist *&l,int i,elemtype &e) //刪除節點
else //i不為1時
if (p==null) //未找到第i-1個結點
return false;
else //找到第i-1個結點*p
}
}
else
return false; //原雙鏈表為空表時
}
原始檔main.cpp的**:
#include "dlinklist.h"
int main()
;
initlist(a);
createlistf(a, a, 10);
printf("length: %d\n", listlength(a));
listinsert(a, 4, 12);
printf("after insert: ");
displist(a);
destroylist(a);
return 0;
}
執行結果:
知識點總結:
通過多檔案組織建立雙鏈表的演算法庫。
學習心得:
建立多類演算法庫。
第四周專案4 建設雙鏈表演算法庫
include include typedef int elemtype typedef struct dnode 定義雙鏈表結點型別 dlinklist void createlistf dlinklist l,elemtype a,int n 頭插法建雙鏈表 void createlistr d...
第四周專案4 建設雙鏈表演算法庫
問題 檔名稱 專案4.cbp 作 者 李藝 完成日期 2015年10月9日 版 本 號 v1.0 問題描述 演算法庫包括兩個檔案 標頭檔案 dlinklist.h,包含定義順序表資料結構的 巨集定義 要實現演算法的函式的宣告 原始檔 dlinklist.cpp,包含實現各種演算法的函式的定義 請採用...
第四周專案4 建設雙鏈表演算法庫
煙台大學計算機與控制工程學院 並建設自己的專業基礎設施演算法庫 輸入描述 無 輸出描述 輸出插入資料後的逆序 標頭檔案dlinklist.h ifndef dlinklist h included define dlinklist h included typedef int elemtype ty...