廣義表的各種運算

2021-07-12 02:24:03 字數 1362 閱讀 9649

題目要求:

編寫乙個程式exp6-5.cpp,實現廣義表的各種運算,並在此基礎上設計乙個主程式完成如下功能

1.

建立廣義表g=「(b,(b,a,(#),d),((a,b),c,((#))))」的鏈式儲存結構;

2.輸出廣義表g的長度;

3.

輸出廣義表g的深度;

4.輸出廣義表g的最大原子

輸入**:

#include#include#includeusing namespace std;

typedef char elemtype;

typedef struct lnode

val;

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

} glnode;

/*建立廣義表的鏈式存貯結構

*/glnode *creategl(char *&s)

else if (ch==')')

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

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

g->val.sublist=null;

else //為原子字元

}else

g=null;//串結束,g置為空

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

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

return g;//返回廣義表g}/*

求廣義表的長度

*/int gllength(glnode *g)

return n;}/*

求廣義表的深度

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

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

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

輸出廣義表

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

if (g->link!=null)

}}/*

求廣義表中的最大原子

*/elemtype maxatom(glnode *g)

else

}else

}int main()

執行截圖:

廣義表運算

廣義表是對線性表和樹的推廣,並且具有共享和遞迴特性的廣義表可以和有向圖 見第7章 建立對應,因此廣義表的大部分運算與這些資料結構上的運算類似。在此,只討論廣義表的兩個特殊的基本運算 取表頭head ls 和取表尾tail ls 根據表頭 表尾的定義可知 任何乙個非空廣義表的表頭是表中第乙個元素,它可...

廣義表的head 和tail運算

1 利用廣義表的head和tail操作寫出函式表示式,把以下各題中的單元素banana從廣義表中分離出來 答案 1 head tail tail l1 2 head head tail l2 3 head head tail tail head l3 4 head head tail tail l4...

廣義表操作 建立廣義表,判斷廣義表是否相等

建立廣義表 演算法思路 從字串行中分離出左部,右部,依次為左部和右部建立儲存 char s 61 設字串行長度不超過60 eg a,b c d,e,f g a i b int sever int a,int b i while k 0 s i i b return i eg a,b c d,e,f ...