• 9.7线性表之顺序表


    9.7线性表之顺序表

    顺序表的概念

    • 顺序表是线性表的一种

    • 用于存储"一对一"的数据

    顺序表称顺序存储结构

    顺序存储结构的特点

    • 将具有 '一对一' 逻辑关系的数据按照次序连续存储到一整块物理空间上

    顺序存储结构示意图:

    顺序表存储数据使用的就是数组

    顺序表的初始化

    使用顺序表存储数据时需要实现申请的:

    • 顺序表申请的存储容量

    • 顺序表的长度(顺序表存储数据元素的个数)(顺序表申请的存储容量要大于顺序表的长度)

    和声明数组一致

    顺序表初始化需要完成的步骤:

    • 顺序表申请存储容量

    • 顺序表长度,表中存储数据元素的个数

    定义顺序表结构体:

    typedef struct Table{
       int * head;
       int length;
       int size;
    }
    type Table struct{
       head *int
       length int
       size int
    }

    head 是声明的一个未初始化的动态数组,不要只把它看做是普通的指针

    初步建立顺序表需要做的工作:

    • 给head动态数组申请足够大小的物理空间

    • 给size和length赋值

    #define Size 5 //对Size进行宏定义,表示顺序表申请空间的大小
    /*
    什么是宏?
    用一个字符串表示有意义的常量或常量表达式(被称为宏)
    #define PI 3.14 (以后在程序当中只要看到了PI就代表3.14)
    */
    table initTable(){
       table t;
       t.head = (int*)mallor(Size*sizeof(int)); //构造一个空的顺序表,动态申请存储空间
       //申请失败,做出提示并且退出程序
       if(!t.head)
      {
           printf("初始化失败");
           exit(0);
      }
       
       //初始化length和size
       t.length = 0;
       t.size = Size;
       return t;
    }

    宏的分类:

    • 有宏参

    • 无宏参


    有宏参的格式:

    #define  宏名  常量或常量表达式
    //例如
    #define PI 3.14 (以后在程序当中只要看到了PI就代表3.14)

    宏的运行原理:

    • 宏的运行原理:“先替换,再代值” 看以下例子

    无宏参的格式:

    #define 宏名 (参数) 表达式
    //例如
    #define FUN(x,y) x*y //--->无参宏的参数不要加上类型

    输出顺序表中元素的函数

    void displayTable(table t)
    {
       for(int i=0; i<t.length; i++)
      {
           printf("%d", t.head[i]);
      }
    }

     

  • 相关阅读:
    机器学习十四--深度学习-卷积
    机器学习十三——垃圾邮件分类2
    机器学习十二----朴素贝叶斯-垃圾邮件分类
    机器学习十一 ——分类与监督学习,朴素贝叶斯分类算法
    机器学习九----主成分分析
    机器学习八——特征选择
    基于D3.js 绘制一个折柱混合图
    一个轮播图
    贪吃蛇
    数组中哪些方法是响应式的
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15239780.html
Copyright © 2020-2023  润新知