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

📄 linknode.cpp

📁 一个C++对赋值语句的翻译,能输出四元式
💻 CPP
字号:
/*   Class:ClinkNode CPP
/    CopyRight CSKSOFT 2004
/    By Csk
/
/
*/

#include "linknode.h"
#include ".\linknode.h"

CLinkNode::CLinkNode(void)
: pcur_node(NULL),pFirst(NULL),pEnd(NULL)
{
}

CLinkNode::~CLinkNode(void)
{
	Clear();
}

void CLinkNode::Clear(void)
{
	GotoEnd();
	while(DeleteNode());
}

long CLinkNode::DeleteNode(void)
{
	Node *tmpNode;
	if (pcur_node){
		if (pcur_node->nextNode==NULL){  //end of the node?
			tmpNode=(Node *)pcur_node->formerNode; //current will be the prev.
			if (tmpNode) {
				tmpNode->nextNode=NULL;
			}else
			{
				pFirst=NULL;
			}
			pEnd=tmpNode;

		}else
		{
			tmpNode=(Node *)pcur_node->nextNode; //current will be the next.
			tmpNode->formerNode=pcur_node->formerNode;

			if (tmpNode->formerNode){  
				((Node *)tmpNode->formerNode)->nextNode=tmpNode;
			}else   //first node
			{
				pFirst=tmpNode;
			}
		}
		delete pcur_node;
		pcur_node=tmpNode;
		return 1;
	}else
	{

		return 0;
	}
}

long CLinkNode::AddNode(void * pnodeData)
{
	Node *tmpNode;
	tmpNode=new Node;

	if (pcur_node){
		tmpNode->formerNode=pcur_node;
			
		
		if 	(pcur_node->nextNode){  //if it's not the end of the node, addining it
			tmpNode->nextNode=pcur_node->nextNode;
		}else
		{
			tmpNode->nextNode=NULL;
			pEnd=tmpNode;
		}
		

		pcur_node->nextNode=tmpNode;
		tmpNode->formerNode=pcur_node;
	}else
	{
		
		tmpNode->formerNode=NULL;
		tmpNode->nextNode=NULL;
		pEnd=pFirst=tmpNode;
	}
	pcur_node=tmpNode;
	pcur_node->pdata=NULL;
	if (pnodeData) ModifyNode(pnodeData);
	return 1;
}

long CLinkNode::GotoFirst(void)
{
	pcur_node=pFirst;
	return (pcur_node!=0);
}

long CLinkNode::GotoEnd(void)
{
	pcur_node=pEnd;
	return (pcur_node!=0);
}

void * CLinkNode::ReadNode(void)
{
	if (pcur_node){
		return pcur_node->pdata;
	}
	return 0;
}

long CLinkNode::GotoNext(void)
{
	if (pcur_node){
		if (pcur_node->nextNode){
			pcur_node=(Node *)pcur_node->nextNode;
			return 1;
		}
	}
	return 0;
	
}

long CLinkNode::GotoPrev(void)
{
	if (pcur_node){
		if (pcur_node->formerNode){
			pcur_node=(Node *)pcur_node->formerNode;
			return 1;
		}
	}
	return 0;
}

void *CLinkNode::ModifyNode(void * pNodeData)
{
	if (pcur_node){
		pcur_node->pdata=pNodeData;
	}
	return 0;
}

bool CLinkNode::IsEndNode(void)
{

	return (pcur_node==pEnd);
}

bool CLinkNode::IsFirstNode(void)
{
	return (pcur_node==pFirst);

}

⌨️ 快捷键说明

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