ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-23 23:00:55  阅读:160  来源: 互联网

标签:01 int C语言 MaxSize 顺序 printf 空间 数据结构 data


#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,int,C语言,MaxSize,顺序,printf,空间,数据结构,data
来源: https://www.cnblogs.com/heshuo/p/16513509.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有