一维数组可以是静态分配的也可以是动态分配的。但是在静态分配时,由于数组大小和空间事先已经固定,一旦空间占满,再加入新的数据就会产生溢出,进而导致程序崩溃。
静态分配方式:
#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; //给每个数组元素赋值为0
}
L.length=0;
}
int main(){
SqList L;//声明一个顺序表
InitList(L);//初始化一个顺序表
for(int i=0;i<MaxSize;i++){
printf("数组的第%d个元素:data[%d]=%d\n",i,i,L.data[i]);
}
return 0;
}
运行结果:
数组的第0个元素:data[0]=0
数组的第1个元素:data[1]=0
数组的第2个元素:data[2]=0
数组的第3个元素:data[3]=0
数组的第4个元素:data[4]=0
数组的第5个元素:data[5]=0
数组的第6个元素:data[6]=0
数组的第7个元素:data[7]=0
数组的第8个元素:data[8]=0
数组的第9个元素:data[9]=0
请按任意键继续. . .
动态分配方式:
#include<stdio.h>
#include<stdlib.h>//包含malloc函数的头文件
#define InitSize 10 //表长度的初始定义
typedef struct{
int *data;//指示动态分配数组的指针
int MaxSize,length; //数组的最大容量和当前个数
}SeqList;
//初始化
void InitList(SeqList &L){
//用malloc 函数申请一片连续的存储空间
L.data =(int*)malloc(InitSize*sizeof(int)) ;
L.length=0;
L.MaxSize=InitSize;
for(int i=0;i<L.MaxSize;i++){
L.data[i]=0; //将数组所有元素设置为0
}
}
int main(void){
SeqList L; //声明一个顺序表
InitList(L);//初始化顺序表
for(int i=0;i<L.MaxSize;i++){
printf("数组的第%d个元素:data[%d]=%d\n",i,i,L.data[i]);
}
return 0;
}
运行结果:
数组的第0个元素:data[0]=0
数组的第1个元素:data[1]=0
数组的第2个元素:data[2]=0
数组的第3个元素:data[3]=0
数组的第4个元素:data[4]=0
数组的第5个元素:data[5]=0
数组的第6个元素:data[6]=0
数组的第7个元素:data[7]=0
数组的第8个元素:data[8]=0
数组的第9个元素:data[9]=0
请按任意键继续. . .