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]);
  }
}

 

posted @ 2021-09-07 19:41  俊king  阅读(157)  评论(0编辑  收藏  举报