⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 symblelinklist.h

📁 一个简单的词法分析程序。是编译原理的部分课程设计。因为时间有限。未能完成全部。如果有朋友改了代码或添加了功能使代码更加完善。请与我联系:ningmeng_studio@163.com谢谢. 做的不是
💻 H
字号:
/*=============================================
**             2005-8-26					**
**			  符号表的链表操作 				**
**			 lizhu zhang					**
=============================================*/
/*=============================================
**函数功能:将新的节点连接到表的最后
**参数说明:[in]pSl:模板,具体参数由调用时指定。
**		   [in]pHd:连表的头节点
**返回值  : 返回连表的头节点
**===========================================*/
SYMBELLIST * FInsertNode(SYMBELLIST * pSl,SYMBELLIST * pHd,int &count)
{

	//将计数清零
	count = 0;

	SYMBELLIST * pHead;
	SYMBELLIST * pTemp;
	SYMBELLIST * pTmp;
	pTemp = (struct SYMBELLIST *)malloc(sizeof(SYMBELLIST));
	pHead = pHd;
//	pTemp = pHd;
	//当连表还为空时,第一次调用此函数创建连表头
	if(pHd == NULL)
	{
		pTemp->addr = 1;
		pTemp->addr = pSl->addr;
		pTemp->kind = pSl->kind;
		pTemp->layer = pSl->layer;
		pTemp->name.len = pSl->name.len;
		pTemp->name.addr = pSl->name.addr;
		pTemp->type = pSl->type;
		pTemp->pNext = NULL;
		pHead = pTemp;
		pHead->pNext = NULL;
		count = 1;
		return pHead;
	}
	//找到最后一个节点,然后将新的节点插入到尾部
	while(pHead != NULL)
	{
		count += 1;
		pTmp = pHead;
		pHead = pTmp->pNext;
	}
	pTemp->addr = pSl->addr;
	pTemp->kind = pSl->kind;
	pTemp->layer = pSl->layer;
	pTemp->name.len = pSl->name.len;
	pTemp->name.addr = pSl->name.addr;
	pTemp->type = pSl->type;
	pTemp->pNext = NULL;
	pTmp->pNext = pTemp;
	count += 1;
	return pHd;

}
/*=============================================
**函数功能:找到指定的节点
**参数说明:[in]pHd:连表的头节点
**		   [in]type:0,查找toke节点,1,查找symble节点
**返回值  :成功返回找到的节点的位置,失败返回0
**===========================================*/
int FFindNode(SYMBELLIST *pHd,const int layer,const char *value)
{
	SYMBELLIST *pHead;
//	SYMBELLIST *pMid;
	//对层进行计数
	int count = 0;
	
	 while(count != layer)
	 {
		  pHead = pHd;

		 while(pHead!=NULL)
		 {
			 if(pHead->name.addr)
				pHead = pHead->pNext;
				count ++;

		 }
		 
	 }												
	return 0;
}
/*=============================================
**函数功能:将所有的节点信息输出到文件
**参数说明:[in]pHd:连表的头节点
**返回值  :无
**===========================================*/
void  FOutToFile(SYMBELLIST *pHead)
{
	SYMBELLIST *pHd;
	pHd = pHead;
	while(pHd!=NULL)
	{
		FFileWrite("syble.txt",1,pHd);
		pHd = pHd->pNext;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -