//顺序表的动态分配
#include<stdio.h>
#include<stdlib.h>//malloc\free函数头文件
#define Initsize 10//默认最大长度
typedef struct{
int *data; //指示动态分配数组的指针
int Maxsize; //顺序表的最大容量
int length; //顺序表的当前长度
}SeqList;
//初始化
void InitList(SeqList &L){
//用malloc 函数申请一片连续的存储空间
L.data=(int*)malloc(sizeof(int));
L.length=0;
L.Maxsize=Initsize;
}
//插入操作
void ListInsert(SeqList &L,int i,int e){
for(int j=L.length;j>=i;j--)//j是数组从零开始,所以length=14;
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
}
//增加动态数组的长度
void IncreaseSize(SeqList &L,int len){
int *p=L.data;
L.data=(int*)malloc((L.Maxsize+len)*sizeof(int));
for(int i=0;i<L.length;i++){
L.data[i]=p[i];
}
L.Maxsize=L.Maxsize+len;
free(p);
}
int main(){
SeqList L;
InitList(L);
IncreaseSize(L,5);
ListInsert(L,1,1);
ListInsert(L,2,3);
ListInsert(L,3,5);
ListInsert(L,4,7);
ListInsert(L,5,9);
ListInsert(L,6,11);
ListInsert(L,7,13);
ListInsert(L,8,15);
ListInsert(L,9,17);
ListInsert(L,10,19);
ListInsert(L,11,21);
ListInsert(L,12,23);
ListInsert(L,13,25);
ListInsert(L,14,27);
ListInsert(L,15,29);
IncreaseSize(L,5);
for(int i=0;i<15;i++){
printf("data[%d]=%d\n",i,L.data[i]);
}
return 0;
}
顺序表动态分配实现
最新推荐文章于 2024-06-16 21:24:39 发布