#include#include#includetypedef char DataType;
typedef struct GListNode
{
int tag;
union
{
DataType atom;//原子域
struct
{
struct GListNode *head;//頭指針域
struct GListNode *tail;//尾指針域
}subList;//子表域
}val;
}GLNode;
void DecomposeStr(char str[],char hstr[])//拆分表頭表尾
{
int i,j,tag,n=strlen(str);
char ch;
ch=str[0];tag=0;
for(i=0;i<=n-1;i++)
{
if(str[i]==','&&tag==1)
{
break;
}
ch=str[i];
if(ch=='(')
tag++;
if(ch==')')
tag--;
}
if(i<=n-1&&str[i]==',')
{
for(j=0;jtag=0;
h->val.atom=str[0];
}
else
{
h=(GLNode*)malloc(sizeof(GLNode));
h->tag=1;
DecomposeStr(str,hstr);
h->val.subList.head=CreatGList(hstr);
if(strcmp(str,"()")!=0)
{
h->val.subList.tail=CreatGList(str);
}
else
{
h->val.subList.tail=NULL;
}
}
return h;
}
int GListDepth(GLNode *h)
{
int max,dep;
GLNode *pre;
if(h==NULL)return 1;
if(h->tag==0)return 0;
pre=h;
for(max=0;pre!=NULL;pre=pre->val.subList.tail)
{
dep=GListDepth(pre->val.subList.head);
if(dep>max)max=dep;
}
return max+1;
}
int GListLength(GLNode *h)
{
int number=0;
GLNode *p;
for(p=h;p!=NULL;p=p->val.subList.tail)
number++;
return number;
}
int GListAtomNum(GLNode *h)
{
if(h==NULL)return 0;
else
{
if(h->tag==0)return 1;
else
{
return GListAtomNum(h->val.subList.head)+GListAtomNum(h->val.subList.tail);
}
}
}
GLNode *GListSearch(GLNode *h,DataType x)
{
GLNode *p;
if(h==NULL)return NULL;
if(h->tag==0&&h->val.atom==x)return h;
if(h->tag==1&&h->val.subList.head!=NULL)
{
p=GListSearch(h->val.subList.head,x);
if(p!=NULL)return p;
}
if(h->tag==1&&h->val.subList.tail!=NULL)
{
p=GListSearch(h->val.subList.tail,x);
if(p!=NULL) return p;
}
return NULL;
}
void DestroyGList(GLNode *h)
{
if(h==NULL)return;
if(h->tag==1&&h->val.subList.head!=NULL)
DestroyGList(h->val.subList.head);
if(h->tag==1&&h->val.subList.tail!=NULL)
DestroyGList(h->val.subList.tail);
free(h);
}
int main()
{
char str1[]="(((a,b,c),(d)),e)";
char str2[]="(((a,b,c),(d)),e)";
char hstr[100];
GLNode *h,*p;
int depth,number,length;
h=CreatGList(str1);
printf("廣義表str1=%s",str2);
DecomposeStr(str2,hstr);
printf("\n表頭=%s",hstr);
printf(" 表尾=%s",str2);
depth=GListDepth(h);
printf("\n深度depth=%d",depth);
length=GListLength(h);
printf("\n長(zhǎng)度length=%d",length);
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
在古交等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需開發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),古交網(wǎng)站建設(shè)費(fèi)用合理。
網(wǎng)站標(biāo)題:c語(yǔ)言廣義表-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://jinyejixie.com/article30/dhccso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、商城網(wǎng)站、網(wǎng)站排名、Google、標(biāo)簽優(yōu)化、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容