c語言廣義表-創(chuàng)新互聯(lián)

#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長度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ù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

在古交等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒ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è),營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),古交網(wǎng)站建設(shè)費(fèi)用合理。

網(wǎng)站標(biāo)題:c語言廣義表-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.muchs.cn/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)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)