zoukankan      html  css  js  c++  java
  • 数据结构学习笔记——顺序数组1

    线性表最简单的刚开始就是顺序存储结构,我是看着郝斌的视频一点一点来的,严蔚敏的书只有算法,没有具体实现,此笔记是具体的实现

    为什么数据结构有ADT呢,就是为了满足数据结构的泛性,可以在多种数据类型使用

    这里所说的数组并不是简单那种数组,这里所讲的是数组结构,就是在内存中是连续存储的,所以要先构造出一个这样的结构

    typedef int ElemType;
    
    typedef struct
    {
        ElemType* elem;  //数组结构中的数据区,可以是任何数据类型,常见的是结构体类型
        int length;         //分配数组的长度
        int listsize;     //数组中实际的长度,实际元素的个数
    }SqList;

    现在这个数组的结构有了,也就是这个数组模型有了,要怎么使用它呢,就是给它分配内存,也就是初始化它

    int InitList(SqList *pArr, int len)
    {
        //将分配的内存首地址返回,如果分配失败,malloc会返回NULL
        pArr->elem = (ElemType*)malloc(sizeof(ElemType)*len);
        if (NULL==pArr->elem)
        {
            printf("数组初始化失败!");
            exit(-2);
        }
        pArr->length = len; //数组的长度
        pArr->listsize = 0; //刚开始数组没有实际元素
        return 1;
    }

    这样初始化成功,我们还要查看数组才知道到底好了没,或者进行一系列的操作,想要查看数组,还需要查看操作

    void ShowList(SqList *pArr)
    {
        if (Is_Empty(pArr))  //首先要判断数组是否为空
            printf("数组为空!");
        else
        {
            for (int i = 0; i < pArr->listsize; i++)//不为空循环显示
            {
                //pArr->elem是分配的首地址,相当于初始化指针,然后可以当数组使用
                printf("%3d", pArr->elem[i]);
            }
        }
    }
    
    int Is_Empty(SqList *pArr)
    {
        if (0 == pArr->listsize)//数组当前实际元素为空
            return 1;
        else
            return 0;
    }

    这样就可以先写个程序验证一下了

    int main()
    {
        SqList a;
        InitList(&a, 5); //自行设置数组总长度为5
        ShowList(&a);
        getchar();
        return 0;
    }
    由于数组没有元素,所以会显示数组为空!
  • 相关阅读:
    adb稳定性monkey测试(转载)
    Cookie、sessionStorage、localStorage的异同
    Vue-eBookReader 学习笔记(初始化部分)
    ValueError: Max value is 14 解决方案
    Chrome 报错: Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.
    Bootstrap使用方法
    Vue笔记
    3D相册 复仇者联盟
    奔跑的少年
    钟表练习 html+css实现
  • 原文地址:https://www.cnblogs.com/acgpiano/p/4028324.html
Copyright © 2011-2022 走看看