按照「0207將演算法變程式」[**]部分建議的方法,建設自己的專業基礎設施演算法庫。
雙鏈表演算法庫演算法庫採用程式的多檔案組織形式,包括兩個檔案:
1.標頭檔案:clinklist.h,包含定義雙鏈表資料結構的**、巨集定義、要實現演算法的函式的宣告;
#ifndef clinklist_h_included
#define clinklist_h_included
//迴圈單鏈表基本運算函式
typedef int elemtype;
typedef struct lnode //定義單鏈表結點型別
clinklist;
void createlistf(clinklist *&l,elemtype a,int n);//頭插法建立迴圈單鏈表
void createlistr(clinklist *&l,elemtype a,int n);//尾插法建立迴圈單鏈表
void initlist(clinklist *&l); //初始化鍊錶
void destroylist(clinklist *&l); //銷毀鍊錶
bool listempty(clinklist *l); //判斷鍊錶是否為空
int listlength(clinklist *l); //求鍊錶長度
void displist(clinklist *l); //輸出鍊錶
bool getelem(clinklist *l,int i,elemtype &e); //取鍊錶元素
int locateelem(clinklist *l,elemtype e); //查詢元素
bool listinsert(clinklist *&l,int i,elemtype e); //插入節點
bool listdelete(clinklist *&l,int i,elemtype &e); //刪除節點
#endif // clinklist_h_included 2.原始檔:clinklist.cpp,包含實現各種演算法的函式的定義
//迴圈單鏈表基本運算函式
#include
#include
#include clinklist.h
void createlistf(clinklist *&l,elemtype a,int n)//頭插法建立迴圈單鏈表
s=l->next;
while (s->next!=null) //查詢尾結點,由s指向它
s=s->next;
s->next=l; //尾結點next域指向頭結點
}void createlistr(clinklist *&l,elemtype a,int n)//尾插法建立迴圈單鏈表
r->next=l; //尾結點next域指向頭結點
}void initlist(clinklist *&l) //初始化鍊錶
void destroylist(clinklist *&l) //銷毀鍊錶
free(p);
}bool listempty(clinklist *l) //判斷鍊錶是否為空
int listlength(clinklist *l) //求鍊錶長度
return(i);
}void displist(clinklist *l) //輸出鍊錶
printf();}
bool getelem(clinklist *l,int i,elemtype &e) //取鍊錶元素
else //i不為1時
if (p==l)
return false;
else}}
else //單鏈表為空表時
return false;
}int locateelem(clinklist *l,elemtype e) //查詢元素
if (p==l)
return(0);
else
return(n);
}bool listinsert(clinklist *&l,int i,elemtype e) //插入節點
else
if (p==l) //未找到第i-1個結點
return false;
else //找到第i-1個結點*p
}}bool listdelete(clinklist *&l,int i,elemtype &e) //刪除節點
else //i不為1時
if (p==l) //未找到第i-1個結點
return false;
else //找到第i-1個結點*p}}
else
return 0;
} 3.在建立演算法庫過程中,為了完成測試,再同一專案(project)中建立乙個原始檔(如main.cpp),編制main函式,完成相關的測試工作。例:
#include
#include clinklist.h
int main()
; initlist(a);
createlistf(a, a, 10);
printf(length: %d
, listlength(a));
listinsert(a, 4, 12);
printf(after insert: );
displist(a);
destroylist(a);
return 0;
}
資料結構之自建演算法庫 迴圈雙鏈表
本文針對資料結構基礎系列網路課程 2 線性表中第13課時迴圈鍊錶。雙鏈表演算法庫演算法庫採用程式的多檔案組織形式,包括兩個檔案 1.標頭檔案 cdlinklist.h,包含定義雙鏈表資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef cdlinklist h included define...
資料結構之自建演算法庫 雙鏈表
本文針對資料結構基礎系列網路課程 2 線性表中第12課時雙鏈表。雙鏈表演算法庫演算法庫採用程式的多檔案組織形式,包括兩個檔案 1.標頭檔案 dlinklist.h,包含定義雙鏈表資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef dlinklist h included define dl...
資料結構之自建演算法庫 順序棧
本文針對資料結構基礎系列網路課程 3 棧和佇列中第3課時棧的順序儲存結構及其基本運算實現。順序棧演算法庫採用程式的多檔案組織形式,包括兩個檔案 1.標頭檔案 sqstack.h,包含定義順序棧資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef sqstack h included defi...