第九周 專案4 2 廣義表的原子統計

2021-07-08 15:51:08 字數 2256 閱讀 3991

4. *檔名稱:第九周 【專案4.2 -廣義表的原子統計】

6. *完成日期:2015.12.06

7. *版號:v1.0

8.9. *

10. *問題描述: 設計演算法,求出給定廣義表g中的原子個數和最大原子

(1)設計乙個演算法,求出給定廣義表g中的原子個數

(2)設計乙個演算法,求出給定廣義表g中的最大原子

12. *輸入描述:無

13. *輸出描述:(b,(b,a,(#),d),((a,b),c))

原子個數 :7

最大原子 :d

process returned 0 (0x0) execution time : 0.016 s

press any key to continue.

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

}}#include #include "glist.h"

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

else

return 0;

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

else

}else

return 0;

}int main()

*執行結果:

*知識點總結:求廣義表中原子個數和最大原子。

*學習心得:在求廣義表最大原子時用遞迴演算法,極大的省去了不必要的麻煩

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

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

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

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

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

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