求c语言链表的详细讲解

如题所述

链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.我们知道,用数组存放数据时,
必须事先定义固定的长度(即元素个数).比如,有的班级有100人,而有的班只有30人,如果要用同一个数组先后存放不同班级的学生数据,则必须定义长度为100的数组.如果事先难以确定一个班的最多人数,则必须把数组定得足够大,以能存放任何班级的学生数据.显然这将会浪费内存.链表则没有这种缺点,它根据需要开辟内存单元.图10.11表示最简单的一种链表(单向链表)的结构.链表有一个"头指针"变量,图中以head表示,它存放一个地址.
该地址指向一个元素.链表中每一个元素称为"结点",每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址.课以看出,head指向第一个元素;第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为'表尾",它的地址部分放一个"NULL"(表示"空地址").链表到此结束.
可以看到:链表中各元素在内存中可以不是连续存放的.要找某一元素,必须先找到上一个元素,根据它提供的下一元素地址才能找到下一个元素.
如果不提供"头指针"(head),则整个链表都无法访问.链表如同一条铁链一样,一环扣一环,中间是不能断开的.打个通俗的比方:幼儿园的老师带领孩子出来散步,老师牵着第一个小孩的手,第一个小孩的另一只手牵着第二个孩子,……,这就是一个"链",最后一个孩子有一只手空着,他是"链尾".要找这个队伍,必须先找到老师,然后顺序找到每一个孩子.
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-15
就是一个个节点,前面的节点有个指针成员,指向下一个节点的地址,以此类推,以便查找,消息来自华夏联盟追问

有点笼统啊

一口气玩转链表(C语言版)
节点与头结点链表中的每个元素被称为节点,包含数据域和指针域。头结点并非必需,但用于标识链表的起始位置。在C语言中,可以定义一个结构体来表示节点,如头结点的创建和使用。链表操作创建链表后,可以进行增删查改操作。向链表添加元素、删除指定元素、查找数据以及更新元素都有特定的步骤和实现代码,这些...

麻烦讲解一下C语言中的链表
一般链表在应用时,会额外建立一个链表头。在链表头里会有一些方便对链表操作的东西。比如你说的free指针,链表的第一节点地址,链表的尾地址,甚至一些控制变量如链表容量等 至于链表的具体应用很复杂,但其根本不会改变,并且链表的数据区可以是任何类型的数据,甚至可以是子链表。

用c语言描述实现线性链表求表长的算法
实现线性链表求表长的算法,使用C语言描述如下:定义一个指向链表头结点的指针p,初始指向链表头结点l。定义一个整型变量len,初始值为0。使用循环结构,条件为p不等于NULL,循环执行以下操作:在循环体内,len的值加1。每次循环结束后,p向后移动到下一个节点。循环结束后,返回len作为链表的长度。

C语言链表很不明白,求详细说一下,非常感谢
循环链表同单链表基本相似,只是循环链表尾节点的next指针始终指向链表的首地址,因此在插入删除操作时会有些不同的地方 节点结构同上,为了实现约瑟夫算法 添加如下方法:List();void init(int val);\/\/向链表中添加值void deleteNode(int val);bool empty();void output();void calculate();\/\/计算约...

求c语言链表的详细讲解
链表如同一条铁链一样,一环扣一环,中间是不能断开的.打个通俗的比方:幼儿园的老师带领孩子出来散步,老师牵着第一个小孩的手,第一个小孩的另一只手牵着第二个孩子,……,这就是一个"链",最后一个孩子有一只手空着,他是"链尾".要找这个队伍,必须先找到老师,然后顺序找到每一个孩子....

求写C语言 创建链表实例子。要最基本的 包括注释。
在创建列表时要动态为链表分配空间,C语言的库函数提供了几种函数实现动态开辟存储单元。malloc()函数实现动态开辟存储单元:malloc函数原型为:void *malloc(unsigned int size); 其作用是在内存的动态存储区中分配一个长度为size的连续空间,函数返回值是一个指向分配域起始地址的指针(类型为void)。

在C语言中,什么是链表呀?
C语言是学习数据结构的很好的学习工具。理解了C中用结构体描述数据结构,那么对于理解其C++描述,Java描述都就轻而易举了!编辑本段两种链表形式 一、循环链表 循环链表是与单链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,...

C语言怎么理解链表 p=(struct stu *)malloc(sizeof(struct stu))为什么...
malloc 分配一段空间,其参数是空间的大小(单位是字节) 比如malloc(5),是分配一段五个字节大小的空间。其返回值的类型是void *。因此赋值的时候要经过强制类型转换sizeof() 是计算参数所占的空间大小。如果参数是一个类型,那就是这种类型的数据的大小,如果是一个变量,那就是这个变量的大小。那...

求大大们具体描述下C语言中的结构体和链表(最好能用图表描述)
在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向明上一个\/或下一个节点的位置的链接("links")。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或...

c语言链表问题?
输入一个整数,如果不等于-1,就将其添加到链表里。第一个数字输完后,p是指向第一个开辟的地址的。接着将head值赋给last,此时直接跳到else里,head的值为开辟的第一个地址。第二个数字输完后,p指向第二个开辟的地址。接着将head值赋给last,last不为null,但是last->next是null,此时不执行...

相似回答