当前位置:文档之家› 数据结构 链表

数据结构 链表

Status InitList(SqList &L)
{
// TODO (#1#): 创建空表
//L.elem=(ElemType*)malloc(MAXSIZE*sizeof(ElemType));不用动态分配内存
//if(!L.elem)exit(OVERFLOW);
L.length=0;
//L.listsize=MAXSIZE;

return ERROR;
//-------------------------------------
}


//将表L置空
Status ClearList(SqList &L)
{
// TODO (#1#): 清空表
L.length=0;

return ERROR;
//-------------------------------------
}

//判断表L是否为空表
bool ListEmpty(SqList L)
{
// TODO (#1#): 顺序表判空
if(L.length==0)
return false;
if(L.length!=0)
return true;



return false;
//-------------------------------------
}

//求表L的长度
int ListLength(SqList L)
{
// TODO (#1#): 求顺序表长度


return L.length;
//-------------------------------------
}

//取表L中的第i个元素,并用e返回. 操作成功返回OK,失败时返回ERROR
Status GetElem(SqList L, int i, ElemType &e)
{
// TODO (#1#): 取元素

e=L.elem[i];


return ERROR;
//-------------------------------------
}

//在表L中定位元素e首次出现的位置. 操作成功返回位序,失败时返回0
// compare(a,b) 为比较函数,匹配时返回true,否则返回false
int LocateElem(SqList L, ElemType e, bool (*compare)(ElemType,ElemType))
{
// TODO (#1#): 在表中定位元素e,用compare(a,b)匹配元素
for (int j=0; jif ( compare(L.elem[j],e) ) return j+1;
return 0;
//-------------------------------------
}


//在表L中插入第i个元素e. 操作成功返回OK,失败时返回ERROR
Status ListInsert(SqList &L, int i, ElemType e)
{
// TODO (#1#): 在链表中插入元素
if (i < 1 || i > L.length+1) return ERROR;


for (int j= L.length ; j>=i ; j-- )
L.elem[j]=L.elem[j-1]; // 插入位置及之后的元素右移


L.elem[i-1] = e ; // 插入e
++L.length; // 表长增1
return OK;





//-------------------------------------
}

//删除表L中第i个元素,结果用e返回. 操作成功返回OK,失败时返回ERROR
Status ListDelete(SqList &L, int i, ElemType &e)
{
// TODO (#1#): 在顺序表中删除元素
if (i < 1 || i > L.length+1) return ERROR;

e=L.elem[i-1];
for(;i{
L.elem[i-1]=L.elem[i];

}

L.length-=1;






return OK;
//-------------------------------------
}

//遍历表L,对每个元素调用visit(x).
Status ListTraverse(SqList L, Status (*visit)(ElemType))
{
// TODO (#1#): 遍历顺序表
for (int j=0; jif ( ! visit(L.elem[j]) )

return ERROR;
return OK;
//-------------------------------------
}

相关主题
文本预览
相关文档 最新文档