1.顺序表的定义静态分配的顺序表存储结构描述为#defineMaxSize50// 定义线性表的最大长度typedefstruct{ElemType data[MaxSize];// 顺序表的元素intlength;// 顺序表的当前长度}SqList;// 顺序表的类型定义动态分配的顺序表存储结构描述为#defineInitSize100//表长度的初始定义typedefstruct{ElemType*data;//指示动态分配数组的指针intMaxSize,length;//数组的最大容量和当前个数}SqList;//动态分配数组顺序表的类型定义C的初始动态分配语句为L.data(ElemType*)malloc(InitSize*sizeof(ElemType));malloc前面括号表明数据类型后面括号是计算要分配的总字节空间.C的初始动态分配语句L.datanew ElemType[InitSize];2.顺序表初始化静态分配://SqList L; // 定义一个顺序表变量LvoidInitList(SqListL){// 构造一个空的顺序表LL.length0;// 顺序表长度为0}动态分配分配初始大小的数组空间并设置长度和容量voidInitList(SqListL){// 构造一个空的顺序表LL.data(ElemType*)malloc(InitSize*sizeof(ElemType));// 动态分配内存空间L.MaxSizeInitSize;// 设置最大容量L.length0;// 顺序表长度为0}3.插入操作boolListInsert(SqListL,inti,ElemType e){// 在顺序表L的第i个位置插入元素eif(i1||iL.length1)returnfalse;// 插入位置不合法if(L.lengthL.MaxSize)returnfalse;// 顺序表已满无法插入for(intjL.length;ji;j--)// 将第i个位置及之后的元素后移L.data[j]L.data[j-1];L.data[i-1]e;// 插入元素eL.length;// 顺序表长度增加1returntrue;// 插入成功}最好情况插入队尾时间复杂度为Q(1)Q(1)Q(1)。最坏情况插入队首时间复杂度为Q(n)Q(n)Q(n)。平均情况时间复杂度为Q(n)Q(n)Q(n)。4.删除操作boolListDelete(SqListL,inti,ElemTypee){// 删除顺序表L的第i个位置的元素并将其值保存在e中if(i1||iL.length)returnfalse;// 删除位置不合法eL.data[i-1];// 将要删除的元素值保存在e中for(intji;jL.length;j)// 将第i个位置之后的元素前移L.data[j-1]L.data[j];L.length--;// 顺序表长度减少1returntrue;// 删除成功}最好情况删除队尾元素时间复杂度为Q(1)Q(1)Q(1)。最坏情况删除队首元素时间复杂度为Q(n)Q(n)Q(n)。平均情况时间复杂度为Q(n)Q(n)Q(n)。5.按值查找顺序查找在顺序表L中查找第一个值等于e的元素返回其位序若未找到则返回0。intLocateElem(SqList L,ElemType e){// 在顺序表L中查找元素e返回其位置for(inti0;iL.length;i)// 从第一个元素开始查找if(L.data[i]e)returni1;// 找到元素e返回其位置从1开始计数return0;// 没有找到元素e返回0}最好情况目标元素在队首时间复杂度为Q(1)Q(1)Q(1)。最坏情况目标元素在队尾或不存在时间复杂度为Q(n)Q(n)Q(n)。平均情况时间复杂度为Q(n)Q(n)Q(n)。顺序表的按序列查找非常简单直接通过数组下标访问即可时间复杂度为Q(1)Q(1)Q(1)。