第九周專案四 廣義表演算法庫

2021-07-07 02:21:51 字數 1832 閱讀 2033

完成日期:2023年11月4日

版 本 號: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

執行結果為:

第九周專案四(廣義表演算法庫)

問題及 all right reserved.檔名稱 廣義表演算法庫 cpp 完成日期 2016年10月27日 版本號 v1.0 廣義演算法庫採用程式的多檔案組織形式 輸入描述 廣義表 程式輸出 廣義表的深度和長度 include include glist.h int main include i...

第九周 專案四 廣義表演算法庫

問題及 all right reserved.檔名稱 廣義表演算法庫 cpp 完成日期 2015年10月27日 版本號 v1.0 廣義演算法庫採用程式的多檔案組織形式 輸入描述 廣義表 程式輸出 廣義表的深度和長度 include include glist.h int main include i...

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

問題及 all right reserved.檔名稱 廣義表演算法庫 cpp 版本號 v1.0 廣義演算法庫採用程式的多檔案組織形式 輸入描述 廣義表 程式輸出 廣義表的深度和長度 include include glist.h int main include include include gl...