链表的实现的思想
链表表示一种是基于链接结构的线性表,链表实现的思想如下:
1、将表中的元素分别储存在一批独立的储存块里面。
2、表结构中的结点都能找到与之相关的下一个结点。
3、在前一个结点里用链表的方式显示的记录与下个结点之间的关联。
链表的简单结构组成
1、 单链表的结点可用一个二元组来表示(elem,next),elem保存着表的数据项,next存储着下一个结点的标识。用到一个表时,只要知道这个表的首结点就可以寻根找到其他结点了。
2、一个单链表由一些具体的表结点构成,每个结点都是一个对象,有的标识,也即该结点的链接,并且节点之间通过结点链接建立单向的顺序联系。
3、通过判断一个值是否是空链表,可知是否已到链表的结束。
实例:(把一个结构体定义为一个类型以及一个指针类型以及类型里面也要拥有一个和前面一样的指针类型,使得表结构中的结点都能找到与之相关的下一个结点)
A的next是B的地址·········(表结构中的结点都能找到与之相关的下一个结点)!
最后通过打印运行
运行结果:
逐个打印出来了ABC的名字!
链表的插入
核心思想就是找到最后一个“Spy(前面命名的结构体名字)”,并且在它的独立的储存块里面的拥有下一个Spy的信息。
(即使最后一个结构体里面的next指向下一个Spy)
例子:假如一个都还没有插入,即head为NULL(空),就使他为新插入的Spy(这里命名为new_spy——新插入Spy的地址),这两个的定义类型一样的,忘记的往上面认真点看看,如果已经有Spy插入了,则head为第一个Spy的取地址,并且使new_spy里面的next为NULL(方便后面继续插入辨别最后一个Spy的操作),假如已经有Spy插入了,则即head不为NULL(空),那我们就要寻找最后一个Spy(最后一个Spy的next是空)!找到了就使它的next指向下一个Spy!
链表的删除
核心思想就是找到要删除的Spy的上一个Spy(特征:要删除的Spy的上一个Spy的next为要删除的Spy的地址),然后使得要删除的Spy的上一个Spy的next指向要删除的Spy的下一个Spy的地址!