数据结构 链表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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; j
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; j
return ERROR;
return OK;
//-------------------------------------
}