线性表之数组

    xiaoxiao2021-03-25  147

    #include<stdio.h>

    #define TRUE 1

    #define FALSE 0

    #define OK 1

    #define ERROR 0

    #define MAXSIZE 20

     

    typedef int ElemType;

    typedef int Status;

    typedef struct LNode {

        ElemType data[MAXSIZE];

        int length;              //线性表中当前元素的个数

    }SqList;

     

    //初始化线性表

    StatuscreatList(SqList *L)

    //输入参数:(1)L:L的地址

    {

        L->length = 0;

        return OK;

    }

     

    //返回线性表中的元素个数

    intgetLength(SqList *L)

    //输入参数:(1)L:L的地址

    {

        return L->length;

    }

     

    //在位置n处插入元素e(注意:位置是从0开始计数的)

    StatusinsertList(SqList *L, int n, ElemType e)

    //输入参数:(1)L:L的地址

    {

        int k;

        //判断输入参数合法性

        if (n < 0 || n > L->length) return ERROR;

        //判断线性表是否已满

        if (L->length + 1>= MAXSIZE) return ERROR;

        //从第n位开始,每个元素后移一位

        //拿到最后一个元素的位置(地址或下标)  

        for (k = L->length; k > n; k--)

        {

            L->data[k] = L->data[k-1];

        }

        //元素e放入位置n处

        L->data[n] = e;

        //线性表当前元素个数加1

        L->length++;

        return OK;

    }

     

    //删除位置n处的元素

    StatusdeleteList(SqList *L, int n)

    //输入参数:(1)L:L的地址。(2)n:被删除的元素在线性表中的位置

    {

        //判断输入参数的合法性

        if (n<0 || n>L->length) return ERROR;

        //判断线性表是否为空

        if (L->length == 0) return ERROR;

        //从第n处位置开始,每个元素前进一位

        for (n; n < L->length; n++)

        {

            L->data[n-1] = L->data[n];

        }

        //线性表中当前元素的个数减1

        L->length--;

        return OK;

    }

     

    //查找线性表中的第n个元素

    ElemTypesearchList(SqList *L, int n)

    //输入参数:(1)L:L的地址。(2)n:线性表中的第n个元素。

    {

        //判断输入参数的合法性

        if (n<0 || n>L->length) return ERROR;

        return L->data[n];

    }

     

    //遍历线性表中元素

    Statustraverse(SqList *L)

    //输入参数:(1)L:L的地址

    {

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

        {

            printf("线性表中第%d个元素是%d\n", i, L->data[i]);

        }

        return OK;

    }

     

    int main()

    {

        SqList La;

        creatList(&La);

        for (int i = 0; i < 10;i++)

        {

            insertList(&La,i, i);

        }

        printf("线性表的长度是%d\n", getLength(&La));

        traverse(&La);

        deleteList(&La,5);

        printf("线性表的长度是%d\n", getLength(&La));

        traverse(&La);

        return OK;

    }

    转载请注明原文地址: https://ju.6miu.com/read-6361.html

    最新回复(0)