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

📄 linehis.c

📁 即时计算加法
💻 C
字号:
/*
  Name:LineHis.c
  Copyright:Starting Line
  Author:
  Date: 13-11-08 00:25
  Description:LineHis 成员函数定义
*/

#include "includes.h"

LineHis * LineHisHead;//全局指针,用于存储表达式历史纪录
LineHis * HisPoint = NULL;//全局指针,用于指向当前历史纪录

/*
  Function Name:AddHis
  Author: 
  Description:创建一个历史记录的节点,CLine域只是一个指针
*/
/*
LineHis * HisCreater ( void )
{
	LineHis * HList = NULL;
	HList = malloc ( sizeof ( LineHis ) );//给HList分配空间
	if ( HList == NULL )
	{
		//是否出错
		Error ( E_OVER_MEM );
	}
	else
	{
		HList -> CLine = NULL;//出于安全性,初始化为NULL
		return HList;//返回节点值
	}
	/*
	注意全局变量LineHisHead,在程序初始化的时候它即被加载分配了空间
	并且前指域与后指域均为NULL
	*//*!!!!!!!!!!!!!!!本函数是否存在待议
}
*/
/*
  Function Name:HisConn
  Author: 
  Description:用于将历史记录链入
*/

void HisConn ( LineHis * Record )
{
/*	LineHisHead -> pre = Record;
	LineHisHead -> next = NULL;
	Record -> next = LineHisHead;//链入
	Record -> pre = NULL;
	*/
	Record -> next = LineHisHead;//
	Record -> pre = LineHisHead -> pre;
	( LineHisHead -> pre ) -> next = Record;
	LineHisHead -> pre = Record;
}

/*
  Function Name:AddHis
  Author: 
  Description:将记录加入历史
*/

void AddHis ( Liner * Record )
{
	//首先将Record复制
	int len;//临时变量,用于记录Liner的对象的CLine成员的长度
	HisPoint = NULL;//声明一个对象并且初始化
	len = strlen ( Record -> CLine );
	HisPoint = ( LineHis * ) malloc ( sizeof ( LineHis ));//分配空间
	if ( HisPoint == NULL )
	{
		Error ( E_OVER_MEM );
	}
	else if ( LineHisHead -> pre != NULL )
	{
                HisPoint -> CLineHis = ( Line ) malloc ( len );//分配长度为len的串
                if ( HisPoint -> CLineHis == NULL )
                {
			Error ( E_OVER_MEM );//判断是否成功并处理
		}
		strcpy ( HisPoint -> CLineHis , Record -> CLine );//复制表达式
		HisConn ( HisPoint );//链入
		//HisPoint -> pre = NULL;
	}
	else if ( LineHisHead -> pre == NULL )
	{
		HisPoint -> CLineHis = ( Line ) malloc ( len );
		strcpy ( HisPoint -> CLineHis , Record -> CLine );//复制表达式
		LineHisHead -> pre = HisPoint;
		HisPoint -> next = LineHisHead;
		HisPoint -> pre =NULL;
	}
	//HisPoint = HList;//将历史纪录指针定向到这一记录
}

/*
  Function Name:InitLineHis
  Author: 
  Description:初始化全局变量LineHisHead
*/

void InitLineHis ( void )
{
	HisPoint = ( LineHis * ) malloc ( sizeof ( LineHis ));//给LineHisHead分配空间
	if ( HisPoint == NULL )
	{
		Error ( E_OVER_MEM );//分配失败的处理
	}
	else
	{
		//将对象中各个成员初始化
		HisPoint -> CLineHis = NULL;
		HisPoint -> pre = NULL;
		HisPoint -> next = NULL;
	}
	LineHisHead = HisPoint;
}

⌨️ 快捷键说明

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