如何建立一个动态链表?原来就这么简单!
什么是链表?当你用一个数组存放数据时就需要给它定义一个长度,如果定一个未知的数据,你就需要扩大数组的范围,有时如果由于某种特殊原因,数据增加,有需要重新修改程序,扩大数组的存储范围,链表就是一种更加简便,不受限制的存储方式,只需要根据分配内存单元即可存储的方式结构。
处理链表需要哪些函数?
C提供了一些内存管理函数这些内存管理函数就可以为你分配内存空间。
![如何建立一个动态链表?原来就这么简单!](https://www.isolves.com/d/file/p/2020/08-11/f517007e2750fe88b783fcd4af78d505.jpg)
- malloc()函数
- calloc()函数
- free()函数
- reallo()函数
![如何建立一个动态链表?原来就这么简单!](https://www.isolves.com/d/file/p/2020/08-11/010e21f62bbe1245e0638acfd00ae10d.jpg)
在执行程序的过程中先一个一个开辟结点然后在每一个结点中输入数据。由于程序是为了实现某一功能而设计的程序所以下面我将举例来说明如何建立动态链表?
举一个建立n个整数的单链表的例子,由于本人能力有限,不过建立一个动态链表还是很容易的。
![如何建立一个动态链表?原来就这么简单!](https://www.isolves.com/d/file/p/2020/08-11/89ef7a4986ec4108dba664000cbbc928.jpg)
建立一个n个整数的单链表,我用两个函数来实现分别是creatlist函数和printlist函数,它们的功能一个是创建,一个是输出。
首先定义一个结构体的类型,这个结构体类型包括一个整形成员和一个指向结构体类型的指针成员。然后我们在输出函数中设三个指针变量,头指针,指向当前节点的指针和指向当前节点的前一个节点的指针。
![如何建立一个动态链表?原来就这么简单!](https://www.isolves.com/d/file/p/2020/08-11/4027bb79ac778e70e066e5b6260a07c6.jpg)
第一,用malloc()函数分配第一个结点,用head指向该结点,然后用r指向该结点。
第二,继续用malloc()函数做第一个结点,s指向新结点,向s输出数据,然后用r的next指向s,r再指向s。
第三,重复操作,一直创建到第n个整数型的单链表为止。再用printlist函数输出。就好啦!
![如何建立一个动态链表?原来就这么简单!](https://www.isolves.com/d/file/p/2020/08-11/155deda811e58c15d4f65588e02160a6.jpg)
具体代码如下:
struct node
{
int date;
struct node*next;
};
struct node*creatlist(into n)
{
struct node*head ,*s,*r;
int i=0;
if((head=strucr node*)malloc(sizeof(struct node)))==NULL)
{
printf("error!");
return 0;
}
head_>next=NULL;
r=head;
for(i=1;i<n;i++)
{
if((s=(struct node*)malloc(sizeof(struct node)))==NULL)
}
}
![如何建立一个动态链表?原来就这么简单!](https://www.isolves.com/d/file/p/2020/08-11/a99d4063dd1f69f6bffe7592e9c78efe.jpg)
希望看完的你动动小手点个关注,你的点赞就是对我最大的鼓励。