typedef struct{
int num; //号数
int people; //人数
}Customer;
如何知道一个数据元素的大小?
C语言:
sizeof(ElemType) //ElemType就是你顺序表中存放的数据类型
//Eg:
sizeof(int)=4B
sizeof(Customer)=8B //结构Customer的大小
顺序表的实现——静态分配
#define MaxSize 10 //定义最大长度
typedef struct{
ElemType data[MaxSize]; //用静态的“数组”存放数据元素
int length; //顺序表当前的长度
}SqList; //顺序表的类型定义(静态分配方式)
给各个数据元素分配连续的存储空间,大小为:
MaxSize*sizeof(ElemType) Element Type缩写
Sq——sequence 顺序,序列
#include<stdio.h>
#define MaxSize 10 //定义最大长度
typedef struct{
int data[MaxSize]; //用静态的“数组”存放数据元素
int length; //顺序表当前的长度
}SqList; //顺序表的类型定义(静态分配方式)
//基本操作—初始化一个顺序表
void InitList(SqList &L){
for(int i=0;i<MaxSize;i++)
L.data[i]=0; //将所有数据元素设置为默认初始值
L.length=0; //顺序表初始长度为0
}
int main(){
SqList L; //声明一个顺序表
InitList(L); //初始化顺序表
//尝试“违规”打印整个dato数组
for(int i=0;i<MaxSize;i++)
printf("data[%d]=%d\n",i,L.data[i]);
return 0;
}
运行结果中可能会有脏数据
length=0这一步不可省略,因为不知道之前内存中有什么数据
MaxSize设置过小就弃疗,设置后就固定。
出于不过分占用内存的考虑,MaxSize也不要设置过大。
顺序表的动态分配
#define InitSize 10 //顺序表的初始长度
typedef struct{
ElemType *data; //指示动态分配数组的指针
int MaxSize; //顺序表的最大容量
int length; //顺序表的当前长度
} SeqList; //顺序表的类型定义(动态分配方式)