資料結構之自建演算法庫 雙鏈表

2021-07-05 06:03:39 字數 2538 閱讀 4373

本文針對資料結構基礎系列網路課程(2):線性表中第12課時雙鏈表。

雙鏈表演算法庫演算法庫採用程式的多檔案組織形式,包括兩個檔案:

1.標頭檔案:dlinklist.h,包含定義雙鏈表資料結構的**、巨集定義、要實現演算法的函式的宣告;

#ifndef dlinklist_h_included

#define dlinklist_h_included

typedef int elemtype;

typedef struct dnode //定義雙鏈表結點型別

dlinklist;

void createlistf(dlinklist *&l,elemtype a,int n);//頭插法建雙鏈表

void createlistr(dlinklist *&l,elemtype a,int n);//尾插法建雙鏈表

void initlist(dlinklist *&l); //初始化雙鏈表

void destroylist(dlinklist *&l); //銷毀雙鏈表

bool listempty(dlinklist *l); //判斷鍊錶是否為空

int listlength(dlinklist *l); //求鍊錶的長度

void displist(dlinklist *l); //輸出鍊錶

bool getelem(dlinklist *l,int i,elemtype &e); //獲取節點的值

int locateelem(dlinklist *l,elemtype e); //查詢乙個節點

bool listinsert(dlinklist *&l,int i,elemtype e) ;//插入乙個節點

bool listdelete(dlinklist *&l,int i,elemtype &e); //刪除乙個節點

#endif // dlinklist_h_included

2.原始檔:linklist.cpp,包含實現各種演算法的函式的定義

#include 

#include

#include "dlinklist.h"

void createlistf(dlinklist *&l,elemtype a,int n)

//頭插法建雙鏈表

}void createlistr(dlinklist *&l,elemtype a,int n)

//尾插法建雙鏈表

r->next=null; //終端結點next域置為null

}void initlist(dlinklist *&l)

void destroylist(dlinklist *&l)

free(p);

}bool listempty(dlinklist *l)

int listlength(dlinklist *l)

return(i);

}void displist(dlinklist *l)

printf("\n");

}bool getelem(dlinklist *l,int i,elemtype &e)

if (p==null)

return false;

else

}int locateelem(dlinklist *l,elemtype e)

if (p==null)

return(0);

else

return(n);

}bool listinsert(dlinklist *&l,int i,elemtype e)

if (p==null) //未找到第i-1個結點

return false;

else //找到第i-1個結點*p

}bool listdelete(dlinklist *&l,int i,elemtype &e)

if (p==null) //未找到第i-1個結點

return false;

else //找到第i-1個結點*p

}

3.在建立演算法庫過程中,為了完成測試,再同一專案(project)中建立乙個原始檔(如main.cpp),編制main函式,完成相關的測試工作。

測試工作可以採用「漸進」的思路,每次涉及的函式應該盡可能少。

例如,下面的設計,測試了部分函式:

#include #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);

return0;

}

資料結構之自建演算法庫 迴圈雙鏈表

本文針對資料結構基礎系列網路課程 2 線性表中第13課時迴圈鍊錶。雙鏈表演算法庫演算法庫採用程式的多檔案組織形式,包括兩個檔案 1.標頭檔案 cdlinklist.h,包含定義雙鏈表資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef cdlinklist h included define...

資料結構之自建演算法庫 迴圈單鏈表

按照 0207將演算法變程式 部分建議的方法,建設自己的專業基礎設施演算法庫。雙鏈表演算法庫演算法庫採用程式的多檔案組織形式,包括兩個檔案 1.標頭檔案 clinklist.h,包含定義雙鏈表資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef clinklist h included de...

資料結構之自建演算法庫 順序棧

本文針對資料結構基礎系列網路課程 3 棧和佇列中第3課時棧的順序儲存結構及其基本運算實現。順序棧演算法庫採用程式的多檔案組織形式,包括兩個檔案 1.標頭檔案 sqstack.h,包含定義順序棧資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef sqstack h included defi...