}
while (pb<= pb_last)
{
//GetElem(Lc, j++, bi);
//ListInsert_Sq(Lc, k++, bi);
*pc++ = *pb++;
}
}
void display(Sqlist &L) //顺序表显示
{
int i;
if (L.length == 0)
cout << "线性表中无元素可显示!!!" << endl;
else
{
for (i = 0; i < L.length; i++)
cout << L.date[i] << " ";
}
}
int ListDelete_Sq(Sqlist &L, int i, int e)//删除顺序表中第i个元素,并用e返回
{
if (i<1 || i>L.length) return ERROR;
int *p, *q;
p = &L.date[i - 1];
e = *p;
q = L.date + L.length - 1;
for (p++; p <= q; p++)
*(p-1) = *p;
L.length--;
return OK;
}
int LocateElem_Sq(Sqlist &L, int e,int(*Compare)(int,int))//返回第一个与e相等的位序
{
int i=1,*p=L.date;
while (i<=L.length&&!(*Compare)(*p++,e))
i++;
if (i <= L.length) return i;
else return 0;
}
int Compare_Sq(int a, int b)
{
if (a == b) return OK;
else
return ERROR;
}
int PriorElem_Sq(Sqlist &L, int cur_e, int &pre_e)//用pre_e返回顺序表的前驱
{
int i=1, *p = L.date;
while (i <= L.length&&!(*Compare_Sq)(*p++, cur_e));
i++;
if (i <= L.length)
{
pre_e = *(p - 2);
return OK;
}
else return ERROR;
}
int NextElem_Sq(Sqlist &L, int cur_e, int &next_e)//用next_e返回顺序表的后继
{
int i=1, *p = L.date;
while (i <L.length&&!(*Compare_Sq)(*p++, cur_e))
i++;
if (i < L.length)
{
next_e = *p;
return OK;
}
else
return ERROR;
}
int DestoryList_Sq(Sqlist &L)//顺序表销毁
{
free(L.date);
return OK;
}
int ClearList_Sq(Sqlist&L)//顺序表清空
{
L.length = 0;
return OK;
}
int ListEmpty_Sq(Sqlist &L)//判断顺序表是否为空
{
if (L.length == 0) return OK;
else
return ERROR;
}