设计一个算法求广义表的所有原子个数。
算法思路:用n累计带头结点的广义表g的原子个数,初值为0。如果g为空表,返回0,否则,让g指向第一个元素,若该元素为子表,递归求出其原子个数并累加到n中,若该元素为原子,将n增1,然后让g指向后续元素。对应的算法如下:
int Atomnum(GLNode *g) /*g为带头结点的广义表*/
{ int n=0;
g=g->val.sublist; /*g指向第一个元素*/
if (g==NULL) return 0; /*为空表时返回0*/
while (g!=NULL) /*遍历表中的每一个元素*/
{ if (g->tag==1) /*元素为子表的情况*/
n=n+Atomnum(g); /*递归调用求出子表的原子个数*/
else // g->tag==0时
n=n+1; /*为原子时增1*/
g=g->link; /*使g指向下一个元素*/
}
return(n); /*返回表的原子个数*/
}
2021-12-25 21:32:45
699KB
数据结构课件
1