題目要求:
編寫乙個程式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 ...