数据结构学习代码实践01(顺序表的建立)(C语言)


#include<stdio.h>
#include<stdlib.h>
//定义一个顺序表 :

//存储结构:其逻辑上相邻,其物理上也相邻

//特点:1、可以随机访问 2、存储密度高 3、拓展内容不易 4、插入、删除不方便

//两种实现方式: 一种是静态(数组),另一种是动态(指针)
//第一种静态(数组)
//#define MaxSize 10 //定义最大长度
//typedef struct{
// ElemType data[MaxSize]; //用静态的“数组”存放数据元素
// int length; //顺序表的当前长度
//}SqList; //顺序表的类型定义

 

//第二种动态(malloc,free),用的时候别忘了头文件#include<stdlib.h>
#define InitSize 10 //默认最大长度
typedef struct{
int *data; //指示动态分配数组的指针
int MaxSize; //顺序表的最大容量
int length; //顺序表的当前长度
}SeqList;//sequence list
//初始化顺序表,为顺序表申请空间
void InitList(SeqList &L){
L.data=(int *)malloc(InitSize*sizeof(int));//给顺序表l申请空间来存数据
//一个int类型的数要占4个字节,那么n个int就要占4n个字节,而InitSize就是n
L.length=0;//初始化L列表的长度
L.MaxSize=InitSize; //初始化顺序表的最大容量为10
}
//增加顺序表的空间
void IncreaseList(SeqList &L,int len){//len值就是增加的空间
int *p=L.data;//p指针指向原来狭小的空间
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;
printf(“顺序表的空间大小为/n”);
printf(“%d/n”,L.MaxSize);
printf(“顺序表的长度为/n”);
printf(“%d/n”,L.length);
for(int i=0;i<L.length;i++)
printf(“%d “,L.data[i]);//将新空间里的数据输出一下
free(p);//将原来狭小的空间释放
}
//使用顺序表
int main(){
SeqList L;//建立一个顺序表
InitList(L);//初始化一个顺序表的其它属性
for(int i=0;i<10;i++){//随便输入10个值初始化的顺序表中的值
scanf(“%d”,&L.data[i]);
}
IncreaseList(L,5);
return 0;

}

 

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/276531.html

(0)
上一篇 2022年7月24日
下一篇 2022年7月24日

相关推荐

发表回复

登录后才能评论