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

2021-07-06 11:08:29 字數 1965 閱讀 4304

/*

檔名稱:第9周專案4-廣義表演算法庫(4.1).cpp

作 者:高露

完成日期:2023年11月6日

版 本 號:v1.0

問題描述: 1)建立廣義表演算法庫,包括:

① 頭文glist.h,定義資料型別,宣告函式;

② 原始檔glist.cpp,實現廣義表的基本運算,主要演算法包括:

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

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

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

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

③ 設計main函式,測試上面實現的演算法

輸入描述: 若干測試資料。

程式輸出: 廣義表的深度。

*/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);

#include int main()

#include #include //glnode是廣義表的重新命名,val是聯合體。

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

return n;

}int gldepth(glnode *g)

g1=g->val.sublist;

if(g1==null)

while(g1!=null)

}g1=g1->link;

}return (max+1);

}//求廣義表g的深度

glnode *creategl(char *&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}

//返回由括號表示法表示s的廣義表鏈式儲存結構

void dispgl(glnode *g)

else

else

dispgl(g->val.sublist);

printf(")");

} if(g->link!=null)

}}//輸出廣義表g

執行結果:

學習心得:

在廣義表的演算法庫應用中,遞迴的應用是隨處可見的,我們要掌握好最基本的遞迴。一層一層的運用才能靈活掌握。

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

檔名稱 專案4 1.cbp 作 者 張晗 完成日期 2015年11月6日 版 本 號 v1.0 問題描述 1 建立廣義表演算法庫,包括 頭文glist.h,定義資料型別,宣告函式 原始檔glist.cpp,實現廣義表的基本運算,主要演算法包括 int gllength glnode g 求廣義表g的...

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

檔名稱 廣義表演算法庫 1 cpp 作 者 張雯婧 完成日期 2016年10月24日 版 本 號 v1.0 問題描述 1 建立廣義表演算法庫,包括 頭文glist.h,定義資料型別,宣告函式 原始檔glist.cpp,實現廣義表的基本運算,主要演算法包括 int gllength glnode g ...

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

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