线性表的顺序存储结构(查找、插入、删除等)

来源:互联网 发布:西安seo工资待遇 编辑:程序博客网 时间:2024/05/20 11:25
#include <stdio.h>#include <stdlib.h>#define LIST_INIT_SIZE 100//线性表存储空间的初始化分配量#define LISTINCREMENT 10//线性表存储空间的分配增量(当存储空间不够时要用到)typedef int ElemType;struct List{    ElemType *elem;//存储空间的基地址    int length;//当前线性表的长度    int listsize;//当前分配的存储容量};int InitList(struct List *L){    L->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));//开辟一个存储空间,并把这块存储空间的基地址赋值给elem    if(!L->elem)    {        return -1;//空间分配失败    }    L->length = 10;//当前长度    L->listsize = LIST_INIT_SIZE;//当前分配量    return 0;}/**   插入操作*/int ListInsert(struct List *L,int i,ElemType e){    //判断i是否在范围内    if (i<1 || i>L->length + 1)return -1;        //判断存储空间是否够用    if(L->length >= L->listsize){        return -1;    }    //插入操作    if (i<=L->length) {        for (int k=L->length-1; k>=i-1; k--) {            L->elem[k+1] = L->elem[k];        }    }    L->elem[i-1] = e;    L->length ++;        return 0;}/** *  初始化数据 */void ListInit(struct List *L){    printf("please input data\n");    int x=1;    for (int i = 0; i<L->length; i++) {        L->elem[i] = x;        x*=2;    }}int ListDelete(struct List *L,int i,ElemType *e){    //判断删除位置合法    if (i<1||i>L->length) {        return -1;    }    if (L->length ==0) {        return -1;    }    //取出删除元素    *e = L->elem[i-1];    for (int j = i;j<L->length;j++) {        L->elem[j-1] = L->elem[j];    }    L->length--;        return 0;}/** *查找操作 */int Locate(struct List *L,ElemType e){    int i = 0;    while (i<L->length&&L->elem[i]!=e) {        i++;    }    if (i<=L->length) {        return i+1;    }else    {        return -1;    }    return 0;}int main(){    struct List L;        /**     *  初始化线性表     */    InitList(&L);    /**     *  初始化数据     */    ListInit(&L);    //查找    printf("8元素在表中的%d位置\n", Locate(&L, 8));    //插入操作    ListInsert(&L, 1, 3);    for (int i =0; i<L.length; i++) {        printf("\n%d,",L.elem[i]);    }    //删除元素    ElemType e;    ListDelete(&L, 1, &e);    for (int i =0; i<L.length; i++) {        printf("\n%d,",L.elem[i]);    }}
1 0
原创粉丝点击