c语言链表中何时用点何时用箭头,链表基本操作及其过程详细叙述

本文介绍了链表作为一种灵活的数据结构,它不像数组那样需要预先确定大小。链表由节点组成,每个节点包含数据和指向下一个节点的指针。通过头指针,可以遍历整个链表。文章详细讲解了链表的插入、删除操作,并通过示例代码展示了如何动态分配内存以及使用`malloc`、`calloc`和`free`函数。此外,还提供了创建、打印、插入和删除链表节点的C语言实现。
摘要由CSDN通过智能技术生成

链表概述:链表是一种常见的数据结构。数组可以存放数据,但是使用数组时要先指定数组中包含元素的个数,即数组长度。但是如果向这个数组中加入的元素个数超过了数组的大小时,便不能将内容完全保存。例如在定义一个班级的人数时,如果小班是30人,普通班是50人,且定义班级人数时使用数组,那么要定义数组的个数为最大,也就是最少为50个元素,否则不满足最大时的情况。这种方式非常浪费空间。而链表,其存储元素的个数不受限定的,当进行添加元素的时候存储的个数就会随之改变。

如图1所示为链表结构的示意图

b97910aaa8e2b8c6754787f495293d21.png

在链表中有一个头指针变量,图中head表示的就是头指针,这个指针变量保存一个地址。从图中的箭头可以看到该地址为一个变量的地址,也就是说头指针指向一个变量。这个变量称为元素,在链表中每一个元素包括两个部分:数据部分和指针部分。数据部分用来存放元素所包含的数据,而指针部分用来指向下一个元素。最后一个元素指针指向NULL,表示指向的地址为空。从图1可以看到,head头结点指向第一个元素,第一个元素中的指针又指向第二个元素,第二个元素的指针又指向第三个元素的地址,第三个元素的指针就指向为空。

根据对链表的描述,可以想象到链表就像一个铁链,一环扣一环。然后通过头指针寻找链表中的元素,这就好比在一个幼儿园中,老师拉着第一个小朋友的手,第一个小朋友又拉着第二个小朋友的手,这样下去在幼儿园中的小朋友就连成了一条线。最后一个小朋友没有拉着任何人,他的手是空着的,他就好像是链表中链尾,而老师就是头指针,通过老师就可以找到这个队伍中的任何一个小朋友。

注意:在链表这种结构中,必须利用指针才能实现。因此链表中的结点应该包含一个指针变量来保存下一个结点的地址。

三个函数:

void *malloc(unsigned int size);

该函数的功能是在内存中动态地分配一块size大小的内存空间。malloc函数会返回一个指针,该指针指向分配的内存空间,如果出现错误则返回NULL。

void *calloc(unsigned int n,unsigned int size);

该函数的功能是在内存中动态分配n个长度为size的连续内存空间数组。calloc函数会返回一个指针,该指针指向动态分配的连续内存空间地址。当分配空间错误时,返回NULL。

void free(void *ptr);

该函数的功能是使用由指针ptr指向的内存区,使部分内存区能被其他变量使用(简单来说就是释放不需要的内存空间)。ptr是最近一次调用calloc或malloc函数时返回的值,free函数无返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值