第八周 專案9 廣義表演算法庫及應用

2021-08-14 05:42:07 字數 1969 閱讀 4530

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

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

#ifndef glist_h_included

#define glist_h_included

typedef char elemtype;

typedef struct lnode

val;

struct lnode *link; //指向下乙個元素

} glnode; //廣義表節點型別定義

int gllength(glnode *g); //求廣義表g的長度

int gldepth(glnode *g); //求廣義表g的深度

glnode *creategl(char *&s); //返回由括號表示法表示s的廣義表鏈式儲存結構

void dispgl(glnode *g); //輸出廣義表g

#endif // glist_h_included

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

#include #include #include "glist.h"

int gllength(glnode *g) //求廣義表g的長度

return n;

}int gldepth(glnode *g) //求廣義表g的深度

g1=g1->link; //使g1指向下乙個元素

}return(max+1); //返回表的深度

}glnode *creategl(char *&s) //返回由括號表示法表示s的廣義表鏈式儲存結構

else if (ch==')')

g=null; //遇到')'字元,g置為空

else if (ch=='#') //遇到'#'字元,表示為空表

g=null;

else //為原子字元

}else //串結束,g置為空

g=null;

ch=*s++; //取下乙個字元

if (g!=null) //串未結束,繼續構造兄弟節點

return g; //返回廣義表g

}void dispgl(glnode *g) //輸出廣義表g

if (g->link!=null)

}}

3.在同一專案(project)中建立乙個原始檔(如main.cpp),編制main函式,完成相關的測試工作。 例:

#include #include "glist.h"

int main()

【專案 -廣義表的原子統計】 

設計演算法,求出給定廣義表g中的原子個數和最大原子

[參考解答] (標頭檔案glist.h是廣義表演算法庫建設的成果,見鏈結…)

#include #include "glist.h"

int atomnum(glnode *g) //求廣義表g中的原子個數

else

return 0;

}elemtype maxatom(glnode *g) //求廣義表g中最大原子

else

}else

return 0;

}int main()

第八周專案4 廣義表演算法庫及應用(2)

標頭檔案 glist.h ifndef glist h included define glist h included typedef char elemtype typedef struct lnode val struct lnode link 指向下乙個元素 glnode 廣義表節點型別定義...

第9周專案4 廣義表演算法庫及應用

問題及 檔名稱 第9周專案4 廣義表演算法庫 4.1 cpp 作 者 劉強 完成日期 2015年10月30日 版 本 號 v1.0 問題描述 1 建立廣義表演算法庫,包括 頭文glist.h,定義資料型別,宣告函式 原始檔glist.cpp,實現廣義表的基本運算,主要演算法包括 int glleng...

第9周專案4廣義表演算法庫及應用

問題及 1 main.cpp 檔名稱 專案3.cpp 完成日期 2015.11.13 問題描述 1 建立廣義表演算法庫 2 設計乙個演算法,求出給定廣義表g中的最大原子 輸入描述 include include glist.h int main glist.h ifndef glist h incl...