线性表7 – 数据结构和算法12
2015-11-16 16:57
369 查看
线性表7
让编程改变世界Change the world by program
单链表的整表创建
对于顺序存储结构的线性表的整表创建,我们可以用数组的初始化来直观理解。而单链表和顺序存储结构就不一样了,它不像顺序存储结构数据这么集中,它的数据可以是分散在内存各个角落的,他的增长也是动态的。
对于每个链表来说,它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。
人生就要追求向单链表一样,灵活应变!
创建单链表的过程是一个动态生成链表的过程,从“空表”的初始状态起,依次建立各元素结点并逐个插入链表。
所以单链表整表创建的算法思路如下:
声明一结点p和计数器变量i;
初始化一空链表L;
让L的头结点的指针指向NULL,即建立一个带头结点的单链表;
循环实现后继结点的赋值和插入。
头插法建立单链表
头插法从一个空表开始,生成新结点,读取数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到结束为止。简单来说,就是把新加进的元素放在表头后的第一个位置:
先让新节点的next指向头节点之后
然后让表头的next指向新节点
嗯,用现实环境模拟的话就是插队的方法,始终让新结点插在第一的位置。
尾插法建立单链表
头插法建立链表虽然算法简单,但生成的链表中结点的次序和输入的顺序相反。就像现实社会我们鄙视插队不遵守纪律的孩子,那编程中我们也可以不这么干,我们可以把思维逆过来:把新结点都插入到最后,这种算法称之为尾插法。(小甲鱼给这个算法想到一个容易记住的艺名,叫“菊花”)
好,那我们接下来就结合欢乐的动画一起来理解理解菊花的内涵吧~
转自:http://blog.fishc.com/1855.html
相关文章推荐
- 线性表6 – 数据结构和算法11
- 线性表5 – 数据结构和算法10
- 线性表4 – 数据结构和算法09
- 项目1--图基本算法库
- 第12周 项目1—数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 数据结构实践—— 二叉树算法验证(中序线索化二叉树的算法验证)
- 第十二周 图 项目2--操作用邻接表存储的图
- 线性表3 – 数据结构和算法08
- 线性表2 – 数据结构和算法07
- 线性表1 – 数据结构和算法06
- 数据结构实践——二叉树算法验证(二叉树构造算法的验证)
- 时间复杂度和空间复杂度3 – 数据结构和算法05
- 2015-11-16 【项目1 - 图基本算法库】
- 数据结构—树——20150604
- 时间复杂度和空间复杂度2 – 数据结构和算法04
- 【数据结构】K-means聚类
- 时间复杂度和空间复杂度1 – 数据结构和算法03
- 谈谈算法 – 数据结构和算法02
- 2015-11-16 【项目2 - 用二叉树求解代数表达式】
- 数据结构实践——二叉树算法验证(层次遍历算法的验证)