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

2022/7/23 23:25:17

本文主要是介绍数据结构学习代码实践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;

}

 



这篇关于数据结构学习代码实践01(顺序表的建立)(C语言)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程