//顺序表——动态分配内存
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define InitSize 10
#define ListIncrement 15//用于扩展空间的变量
typedef struct{
int *data;
int length;
int Maxsize;
}Sqlist;
void InitSqlist(Sqlist&L){
L.data = (int *)malloc(sizeof(int)*InitSize);
L.length = 0;
L.Maxsize = InitSize;
}
int Create_Sqlist(Sqlist &L,int n){、、
if(n>L.Maxsize){//如果n大于初始空间则会进行分配新内存
//realloc()在原有的内存空间上在申请若干大小的空间
//指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)
int *newbase = (int*)realloc(L.data,sizeof(int)*(L.Maxsize+ListIncrement));
if(newbase){
L.data = newbase;
L.Maxsize += ListIncrement;
}
else{
return 0;
}
}
for(int i = 0;i < n;i++){
scanf("%d",&L.data[i]);
}
L.length = n;
return 1;
}
void Print_Sqlist(Sqlist L){
for(int i = 0;i < L.length;i++){
printf("%d ",L.data[i]);
}
printf("\n");
}
int main(){
Sqlist L;
InitSqlist(L);
int n ;
scanf("%d",&n);
Create_Sqlist(L,n);
Print_Sqlist(L);
return 0;
}
本文介绍如何使用C语言实现顺序表,包括初始化、动态扩容和创建操作。重点讲解了如何在创建时根据用户输入动态分配内存,并利用realloc进行空间扩展。通过实例演示了初始化列表、插入元素和打印列表的过程。
1506

被折叠的 条评论
为什么被折叠?



