zoukankan      html  css  js  c++  java
  • 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]);
      }
    }

     

  • 相关阅读:
    python笔记之条件语句、循环语句、迭代器和生成器
    浅谈IO和NIO
    浅谈java自定义类加载器
    浅谈Synchronized和ReentrantLock
    软工1816 · 第三次作业
    软工1816 · 第二次作业
    软工1816 · 第一次作业
    简单的自我介绍
    The Last
    第七次课程作业
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15239780.html
Copyright © 2011-2022 走看看