该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include "z_bo2-1.c" 这个头文件的代码
Status Init_list(sqlist *l)
{ //构造一个空的顺序线性表
(*l).elem=(ElemType *) malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!(*l).elem)
exit(-1);//异常退出
(*l).length=0; //初始化长度为:0
(*l).listsize= LIST_INIT_SIZE; //初始哈存储容量
}
Status Destroy_list(sqlist & l)
{}//销毁顺序线性表
free(l.elem);
l.elem=NULL;
L.length=0;
l.listsize=0;
}
Status Clear_list(sqlist & l)
{}//重置线性表为空表
l.length=0;
}
Status List_empty(sqlist & l)
{} //判读线性表若为空表,则返回TRUE ; 否则返回FALSE
if(l.length==0)
return TRUE;
else
return FALSE;
}
int List_length(sqlist & l)
{} //返回l中数据元素的个数
return l.length;
}
Status Get_elem(sqlist l,int i, ElemType &e)
{}//用e返回l中第i个数据元素的值
if(i<1 || i>l.length)
return ERROR;
e=*(l.elem+i+1);
return OK;
}
int Locate_elem(sqlist l,ElemType e,Staus(*compare)(ElemType,ElemType))
{} // campare()是数据元素判定函数(满足为 1, 否则为 0?
//返回l中第一个与e满足关系compare()的数据元素的位序
//若这样的数据元素不存在,则返回值为 0。
ElemType *p;
int i =1;
p=l.elem;
while(i<=l.length && !compare(*p++,e))
i++;
if(i<=l.length)
return i;
else
return 0;
}
Status Prior_elem(sqlist l,ElemType cur_e, ElemType &pre_e)
{} //若cur_e是l的数据元素,且不是第一个,则用pre_e返回它的前?
//否则操作失败,pre——无定义
int i=2;
ElemType *p=l.elem+1;
while(i<=l.length && *p!=cur_e)
{
p++;
i++;
}
if(i>l.length)
return INFEASIBLEL; //操作失败
else
{
pre_e=*--p; // *--p是获取--p的地址
return OK;
}
}
Status Next_elem(sqlist l,ElemType cur_e, ElemType &next_e)
{} //若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继?
//否则操作失败,next_e无定义
int i=1;
ElemType *p=l.elem;
while(i
{
i++;
p++;
}
if(i==l.length)
return INFEASIBLEL; //操作失败
else
{
next_e=*++p;
return OK;
}
}
Status List_insert(sqlist &l,int i, ElemType e)
{} //在L中第i个位置之前插入新的数据e,l的长度加
ElemType *newbase,*q,*p;
if(i<1 || i>l.length+1)
return ERROR;
if(l.length>=l.listsize)
{
if(!(newbase=(ElemType *)realloc(l.elem,(l.listsize+LIST_INCREMENT)*sizeof(ElemType))))
exit(-1); //存储分配失败
l.elem=newbase; //新地址
l.listsize+=LIST_INCREMENT;//增加存储容量
}
q=l.elem+i-1;
for(p=l.elem+l.length-1; p>=p; p++)
*(p+1)=*p;
*q=e;
++l.length;
return OK;
}
Status List_delete(sqlist &l,int i, ElemType &e)
{} //删除l的第i个数据元素,并用e返回其值,l的长度减
ElemType *q, *q;
if(i<1 || l.length) //i值不合法
return ERROR;
P=L.elem+i-1;//p为被删除元素的位置
e=*p; // 被删除元素的值赋给e
q=l.elem+l.length-1; // 表尾元素的位置
for(++p; p<=p; ++p) // 被删除元素之后的元素左移
*(p-1)=*p;
l.length--;
return OK;
}
Status List_traverse(sqlist l,void(*vi)(ElemType&))
{} //依次对L的每个数据原调用函数vi(