第二章线性表P29~34(顺序线性表算法)

来源:互联网 发布:windows vista能升级 编辑:程序博客网 时间:2024/06/05 09:08
#include<iostream.h>#include<stdlib.h>#include<malloc.h>#define Maxsize 50typedef int ElemType;typedef struct{ElemType data[Maxsize];int length;}SqList;void CreateList(SqList * &L,ElemType a[],int n){    int i;L=(SqList *)malloc(sizeof(SqList));    for(i=0;i<n;i++){L->data[i]=a[i];L->length=n;}}void InitList(SqList *&L)//本算法的空间复杂度为o(1){L=(SqList *)malloc(sizeof(SqList));L->length=0;}void DestroyList(SqList *&L)//本算法的空间复杂度为o(1){free(L);}bool ListEmpty(SqList *L)//本算法的空间复杂度为o(1){if(L=NULL)return false;return true;}int ListLength(SqList *L)//本算法的空间复杂度为o(1){return L->length;}void DispList(SqList *L)//本算法的空间复杂度为o(L->length){int i;for(i=0;i<L->length;i++){cout<<L->data[i]<<" ";}cout<<endl;}bool GetElem(SqList *L,int i,ElemType &e)//本算法的空间复杂度为o(1){if(i<1||i>L->length){return false;}e=L->data[i-1];return true;}int LocateElem(SqList *L,ElemType e)//本算法的空间复杂度为o(L->length){    int i=0;    while(i<L->length&&L->data[i]==e)    i++;if(i>=L->length)return 0;elsereturn i+1;}bool ListInsert(SqList *&L,int i,ElemType e)//本算法的空间复杂度为o(n){int j;if(i<1||i>L->length)return false;i--;for(j=L->length;j>i;j--)L->data[j]=L->data[j-1];L->data[i]=e;L->length++;return true;}bool ListDelete(SqList *&L,int i,ElemType &e)//本算法的空间复杂度为o(n){if(i<1||i>L->length)    return false;    i--;e=L->data[i];for(int j=i;j<L->length-1;j++){L->data[j]=L->data[j+1];}    L->length--;    return true;}int main(){SqList *L;int e;int a[10]={1,2,3,4,5,6,7,8,9,10};InitList(L);    CreateList(L,a,10);DispList(L);ListDelete(L,3,e);cout<<e<<endl;    DispList(L);    ListInsert(L,3,e);DispList(L);return 0;}

1 0