📄 linehis.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 + -