美文网首页
顺序表的基本操作

顺序表的基本操作

作者: 小漆江西 | 来源:发表于2018-10-07 16:15 被阅读25次

    #include"SqList.h"

    #include"pch.h"

    #include<iostream>

    constexpr auto MAXSIZE = 100;

    typedef struct

    {

    int *elem;

    int length;

    }SqList;

    Status InLIst(SqList *L)

    {//构造一个空的顺序表

    L->elem= new int[MAXSIZE];

    if (!L->elem) exit(OVERFLOW);

    L->length = 0;

    return OK;

    }

    void DestroyList(SqList *L)

    {//销毁一个顺序表

    if (L->elem) delete[]L->elem;

    }

    void ClearList(SqList *L)

    {//清空一个顺序表

    L->length = 0;

    }

    int GetLength(SqList *L)

    {//求顺序表的长度

    return (L->length);

    }

    int IsEmpty(SqList *L)

    {//判断顺序表是否为空

    if (L->length==0)

    {

    return 1;

    }

    else

    {

    return 0;

    }

    }

    int GetElem(SqList L,int i, int *e)

    {//求取顺序表中某个数据元素的内容

    if (i<1||i>L.length)

    return ERROR;//判断i值是否合理,若不合理,则返回ERROR

    *e = L.elem[i - 1];

    return OK;

    }

    int LocateElem(SqList L ,int e)

    {//查找成功返回序号,查找不成功返回0

    for (int i = 0; i < L.length; i++)

    if (L.elem[i] == e)

    return i + 1;

    return 0;

    }

    Status ListInsert_Sq(SqList *L, int i, int e)

    {//插在第i个节点前

    if (i<1 || i>L->length + 1)//;i值不合法

    return ERROR;

    if (L->length == MAXSIZE)//当前内存已满

    return ERROR;

    for (int j = L->length - 1; j >= i - 1; j--)

    L->elem[j + 1] = L->elem[j];//插入元素及以后的位置后移

    L->elem[i - 1] = e;//新元素e放入第i个位置

    ++L->length;//表长加1

    return OK;

    }

    Status ListDelete_Sq(SqList *L, int i)

    {//删除第i个节点

    if (i<1 || i>L->length)//i值不合法

    return ERROR;

    for (int j = 1; j <= L->length-1; j++)

    L->elem[j - 1] = L->elem[j];//被删除元素之后的元素向前移

    --L->length;//表长减1

    return OK;

    }

    相关文章

      网友评论

          本文标题:顺序表的基本操作

          本文链接:https://www.haomeiwen.com/subject/gjblaftx.html