2020-10-04

    科技2022-07-20  128

    数据结构线性表单链表基本操作

    //结构体类型 SqList表示 typedef struct { ElemType data[MaxSize]; //存放线性表中的元素 int length; //存放线性表的长度 } SqList; //顺序表的类型

    //建立顺序表 void CreateList(SqList * &L,ElemType a[],int n) //由a中的n个元素建立顺序表 { int i=0,k=0; //k表示L中的元素个数,初始值为0 L=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间,向系统申请存放SqList的地址,并且将地址转化为指针 while(i<n) //i扫描数组a的元素 { L->data[k]=a[i]; //将元素a[i]存放到L中 k++; i++; } L->length=k; //设置L的长度k }

    //初始化线性表 void InitList(SqList * &L) { L=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间 L->length=0; //置空线性表的长度为0 }

    //销毁线性表 void DestroyList(SqList * &L) { free(L); //释放L所指的顺序表空间 }

    //判断线性表是否为空表 bool ListEmpty(SqList * L) { return(L->length==0); }

    //求线性表的长度 int ListLength(SqList * L) { return(L->length); }

    //输出线性表 void DisList(SqList * L) { for(int i=0;ilength;i++) //扫描顺序表输出各元素值 { printf("%d",L->data[i]); } printf("\n"); }

    //求线性表中的某个数据元素的值 bool GetElem(SqList * L,int i,ElemType &e) { if(i<1||i>L->length) //参数i错误的时候返回false { return false; } e=L->data[i-1]; //取元素值 return ture; //成功找到元素的时候返回true }

    //按元素值查找 int LocateElem(SqList * L,ElemType e) { int i=0; while(ilength&&L->data[i]!=e) { i++; //查找元素e } if(i>=L->length) //未找到时返回0 { return 0; } else { return i+1; //找到后返回其逻辑序号 } }

    //插入数据元素 bool ListInsert(SqList * &L,int i,ElemType e) { int j; if(i<1||i>L->length+1||L->length==Maxsize) //参数i错误时返回false { return false; } i–; //顺序表逻辑序号转化为物理序号 for(j=L->length;j>i;j–) //将data[i]及后面的元素后移一个位置 { L->data[j]=L->data[j-1]; } L->data[i]=e; //插入元素e L->length++; //顺序表的长度加一 return true; //成功插入返回ture }

    //删除数据元素 bool ListDelete(SqList * &L,int i,ElemType &e) { int j; if(i<1||i>L->length) //参数错误时返回false { return false; } i–; //将顺序表逻辑序号转化为物理序号 e=L->data[i]; for(j=i;jlength-1;j++) //将data[i]之后的元素前移一个位置 { L->data[j]=L->data[j+1]; } L->length–; //顺序表的长度减一 return true; //成功删除返回ture }

    Processed: 0.011, SQL: 8