关于线性表删除元素的算法

来源:百度知道 编辑:UC知道 时间:2024/05/25 13:38:45
Status ListDelete_Sq(SqList &L,int i,ElemType &e)
{
if((i<1)||i>L.length)) return ERROR;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;//表尾元素的位置
for(++p;p<=q;++p) *(p-1)=*p;
--L.length;
return OK;
}//ListDelete_Sq

对于这个删除元素的算法,我想问下几个问题:
1."Status"是什么意思呢?是不是类型的一个代表呢?如同"ElemType"一样。
2."q=L.elem+L.length-1;//表尾元素的位置"为什么不用q=&(L.elem[i-1])表示呢?
对于这个L.elem的概念我有点不懂。
3.对于算法和函数的概念我有点不懂,它们不都是用来被调用的吗?都有函数体等特征!

1,Status原意是状态的意思,在这里表示返回的是一个状态,要么返回错误状态,要么返回成功状态,当然,用int定义函数也可以,可以用返回1表示成功;算法可以这样写,但是在程序中就要用其他的代替,像ElemType,写程序时就要用char,int等代替
2,elem是在定义表L时的一个数组,L.elem[i]表示第i个元素,你说的q=&(L.elem[i-1])是不对的,不过可以这样q=&(L.elem[L.length])
3,算法和函数概念不同:你要解决一个问题,需要分析这个问题,然后列出解决这个问题的方案步骤,这个步骤就称为解决这个问题的算法;函数是指(我的理解)一个工具,你可以用这个工具来解决问题。一个算法可以有几个函数。

a