22线性表的顺序存储结构 (2)在计算机内存中为线性表分配存储空间 typedef struct/存储线性表的结构体 ElemType data Maxsizel;存储线性表数据元素 int length;/存储线性表的元素个数一长度 i Sqlist Sqlist*L∥定义一个指向 Sqlist类型的指针 L=( Sqlist) malloc( sizeof( Sqlist分配内存空间 16
16 2.2线性表的顺序存储结构 使用C/C++提供的内存分配语句malloc, 在计算机内存中分配一个大小、结构与SqList 类型相同的存储空间,并将该存储空间的首地 址赋给指针变量L。 SqList * L L=(SqList *)malloc(sizeof(SqList)) //定义一个指向SqList类型的指针 typedef struct //存储线性表的结构体 { ElemType data[MaxSize];//存储线性表数据元素 int length;//存储线性表的元素个数—长度 } SqList; (2)在计算机内存中为线性表分配存储空间 //分配内存空间
22线性表的顺序存储结构 L=(Sqlist*)malloc(sizeof(sqlist)) 函数 原 形/图数功能: Allocates memory blocks void *malloc(unsigned size ) 必须包含的头文件为< malloc. h>或者< stdlib. h> 17
17 2.2线性表的顺序存储结构 L=(SqList *)malloc(sizeof(SqList)) void *malloc(unsigned size ); 函 数 原 形 函数功能:Allocates memory blocks 必须包含的头文件为<malloc.h>或者<stdlib.h>
22线性表的顺序存储结构 颜数据元 1、数组下标从0开始,所以 素下标 顺序表中第个元素的下标 0 a 是i-1 a 2、 Maxsize是事先定义的 个常数,它是顺序表所 ai 能存储的最大元素个数 3、线性表满,表示表中有 Maxsiz个元素,表的长度 为 Maxsize;若表中有n个元 素(n< Maxsize),表的长度 为n;若表中无任何元素 Maxsize-1 a maxsiz(m=0),称线性表为空表。 18
18 2.2线性表的顺序存储结构 a1 a2 ai an … … … … 0 1 i-1 n-1 MaxSize-1 数据元 素下标 1、数组下标从0开始,所以 顺序表中第i个元素的下标 是i-1 2、MaxSize是事先定义的 一个常数,它是顺序表所 能存储的最大元素个数 3、线性表满,表示表中有 MaxSize个元素,表的长度 为MaxSize;若表中有n个元 素(n<MaxSize),表的长度 为n;若表中无任何元素 (n=0),称线性表为空表。 aMaxSize
22线性表的顺序存储结构 微公是指向该贩序表的指针,如何访问顺序 素下标 表中的第个元素? 0 a 1、将表中第论个元 素的值赋给变量e a2 e=L->datai-1l 2、将变量e的值赋 给表中第个元素 n-1 a L->datai-l=e MaxSize-1
19 2.2线性表的顺序存储结构 a1 a2 ai an … … … … 0 1 i-1 n-1 MaxSize-1 数据元 素下标 设L是指向该顺序表的指针,如何访问顺序 表中的第i个元素? e=L->data[i-1] 1、将表中第i个元 素的值赋给变量e L->data[i-1]=e 2、将变量e的值赋 给表中第i个元素
22线性表的顺序存储结构 22.2版序表的建及基本运算的实现 、用一个含有n个元素的数组建立顺序表 void Createlist(sqlist *&L, elem Type all, int n) int for(i=0; i<n;i++) ->datai=a; L->length=n; 问:若>Maie,会出现什么问题? 20 如何改进?
20 2.2线性表的顺序存储结构 1、用一个含有n个元素的数组建立顺序表 void CreateList(SqList *&L,ElemType a[],int n) { int i; for(i=0;i<n;i++) L->data[i]=a[i]; L->length=n; } 2.2.2 顺序表的建立及基本运算的实现 问:若n>MaxSize,会出现什么问题? 如何改进?