单链表的原理就不细述了,不懂的可以看一下其他文章或者教学视频。这里简单回顾一下原理:
简单来说类似于火车车厢连接,但又不同,因为火车车厢可以从当前车厢走到上一个或者下一个车厢,但单链表就是相当于火车只能从当前车厢走到下一个车厢,是无法从当前车厢走到上一节车厢的。
用c语言创建动态单链表的核心要点:
1.怎么构造单链表的基本单元?
用结构体定义一个单链表的单元,结构体里可以“储存”两个信息:一个是需要存储的数据,一个是指向下一个单元的地址,这样就简单构成了一个单链表的基本单元。
用中文表示就是:结构体{数据存储处;地址存储处}
2.怎么实现单链表“单向链接”的特性?
在地址存储处中放入下一个单元的地址,就可以实现单链表单向链接的特性。比如
结构体A{97;A001}(97是需存储数据,A001是下一个单元的地址)
结构体B{96;A002}(已知结构体B的内存地址为A001,那访问结构体A时,就可以找到B,同时B又存着C的内存地址,又可以找到C。。以此类推,如果定义了A、B、C、D、F单元,那就可以从A单元找到B单元,又从B单元找到C单元。。。一直找到F单元)
(如果不明白结构体的地址问题,我这里简单补充一下,C语言的结构体是一个特殊的存储单元,它可以由各种类型的变量组成,然后共用一个内存地址)
3.怎么实现动态单链表的创建?
首先要明白什么叫做动态创建单链表,就是我有一个数据时,我就创建一个“单元”把数据放进去。有5个数据,那就创5个单元。有7个数据,那就创建7个单元。而不是像静态链表一样,先创建好10个单元,我只能存10个以下的数据。
并且在创建过程中,我需要创建1000个单元的单链表,不再需要自己一个一个地定义单元,由循环自动完成。
如果要实现循环自动完成,那这个循环需要干这些事情:
第一:循环要自动定义一个单元,并且为这个单元分配内存地址
第二:将新创建的单元,自动地与上一个单元进行连接。
(这个步骤是动态创建单链表最核心的,也是最关键的,也从根本上体现了自动创建动态单链表的核心思想)
4.怎么自动地与上一个内存单元进行连接?我用中文直接把整个创建过程给写出来,应该读者会更好明白。
——————分割线——————————
第一步&