第三週專案2 建設「單鏈表」演算法庫

2021-07-22 19:46:00 字數 3172 閱讀 3083

/*  

* 煙台大學計算機與控制工程學院  

* 完成日期:2023年9月18日  

* 問題及**:

* 問題描述:單鏈表演算法庫演算法庫採用程式的多檔案組織形式,包括兩個檔案:

* 輸入描述:無  

* 程式輸出:結果   */

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

[csharp]view plain

copy

#ifndef linklist_h_included

#define linklist_h_included

typedef int

elemtype;  

typedef struct

lnode        

//定義單鏈表結點型別

linklist;  

void

createlistf(linklist *&l,elemtype a,

intn);

//頭插法建立單鏈表

void

createlistr(linklist *&l,elemtype a,

intn);

//尾插法建立單鏈表

void

initlist(linklist *&l);  

//初始化線性表

void

destroylist(linklist *&l);  

//銷毀線性表

bool

listempty(linklist *l);  

//判斷線性表是否為空

intlistlength(linklist *l);  

//求線性表長度

void

displist(linklist *l);  

//輸出線性表

bool

getelem(linklist *l,

inti,elemtype &e);  

//求線性表某個資料元素值

intlocateelem(linklist *l,elemtype e);  

//按元素值查詢

bool

listinsert(linklist *&l,

inti,elemtype e);  

//插入資料元素

bool

listdelete(linklist *&l,

inti,elemtype &e);  

//刪除資料元素

#endif // linklist_h_included

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

[csharp]view plain

copy

#include 

#include 

#include "linklist.h"

void

createlistf(linklist *&l,elemtype a,

intn)

//頭插法建立單鏈表

}  void

createlistr(linklist *&l,elemtype a,

intn)

//尾插法建立單鏈表

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

}  void

initlist(linklist *&l)  

void

destroylist(linklist *&l)  

free(p);    //此時q為null,p指向尾結點,釋放它

}  bool

listempty(linklist *l)  

intlistlength(linklist *l)  

return

(i);  

}  void

displist(linklist *l)  

printf("\n"

);  

}  bool

getelem(linklist *l,

inti,elemtype &e)  

if(p==null)            

//不存在第i個資料結點

return

false

;  else

//存在第i個資料結點

}  intlocateelem(linklist *l,elemtype e)  

if(p==null)  

return

(0);  

else

return

(n);  

}  bool

listinsert(linklist *&l,

inti,elemtype e)  

if(p==null)    

//未找到位序為i-1的結點

return

false

;  else

//找到位序為i-1的結點*p

}  bool

listdelete(linklist *&l,

inti,elemtype &e)  

if(p==null)                

//未找到位序為i-1的結點

return

false

;  else

//找到位序為i-1的結點*p

}  3.建立乙個原始檔(如main.cpp),編制main函式,完成相關的測試工作。

[csharp]view plain

copy

#include "linklist.h"

intmain()    

執行結果:

學習總結:

(1)插入節點時,這兩個語句的順序不能顛倒,s->next=p->next;p->next=s;

(2)刪除節點的操作,p->next=p->next->next;也可以設乙個中間量q;

(3)在單鏈表中,插入乙個節點必須先找到插入該節點的前驅節點;刪除乙個節點亦是如此;

學習心得:

能自由插入、刪除鍊錶,很有成就感。

第三週 專案2 建設順序表演算法庫

檔名稱 cpp.cpp 作者 王超 完成日期 2015.9.18 問題描述 建設順序表演算法庫 include include define maxsize 50 typedef int elemtype typedef struct sqlist void createlist sqlist l,...

第三週專案2 建設「順序表」演算法庫

問題及 檔名稱 專案2.cbp 作 者 完成日期 2015年9月16日 版 本 號 v1.0 問題描述 請採用程式的多檔案組織形式,在專案1的基礎上,建立 如上的兩個檔案,另外再建立乙個原始檔,編制main函 數,完成相關的測試工作。輸入描述 無 程式輸出 依據各個函式而定 list.h檔案 ifn...

第三週 專案2 建設「順序表」演算法庫

01.04.檔名稱 list.cpp 05.作 者 蘇凱祺 06.完成日期 2014年10月9號 07.版 本 號 v1.0 08.問題描述 建設 順序表 的演算法庫 09.list.h ifndef list h included define list h included define max...