2021-01-17

数据结构动态分配

 

实现一些基本的功能:查找数据(按值和按位)、删除数据(通常按位)、插入元素(按位)、输出表的长度以及打印表。

1>定义结构体

2021-01-17_第1张图片

定义数据时尽量有很高的可读性

对于引用符号&的使用方法:如果函数处理后对表的数据的执行结果需要带回来,则就要使用引用符号

2>初始化表

动态链表不同于静态链表,静态链表在定义后系统会自动为其分配内存空间。动态链表分配内存空间常使用函数malloc释放空间使用free函数)两者都有一个共同的头文件#include

malloc函数解析:malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小。而系统为其分配的内存空间为:初始链表数据数量*数量类型   L.data=(int *)malloc(sizeof(int)*Initsize)---数据类型要对应一致,malloc是强制转换

同时指针data是指向存储地址的首地址,按元素类型所占空间向后移动查询

 

2021-01-17_第2张图片

3>向表中输入一些数据

2021-01-17_第3张图片

2021-01-17_第4张图片

4>为表的容量扩容

因为malloc是为表开辟一个连续的空间所以,我重新分配空间时也是重新对表分配了一片连续的地址。所以我们需要对其进行数据的转移,在转移之后对表的容量进行增加。

2021-01-17_第5张图片

对于设置指针p是方便对数据进行迁移

2021-01-17_第6张图片

 5> 查找数据(按位)

2021-01-17_第7张图片

6>删除元素

对于连续的空间删除元素就是将删除元素位置后所有元素向前移动

2021-01-17_第8张图片

可以对删除位置进行判断是否合法

2021-01-17_第9张图片

7>插入数据(按位)

对于插入位置判断和删除数据相同主要从表当时长度和表的容量以及插入位置入手判断

2021-01-17_第10张图片

2021-01-17_第11张图片

8>main()函数内容

2021-01-17_第12张图片

 

你可能感兴趣的:(数据结构,链表,数据结构)