单链表的整表创建和删除以及顺序存储结构和链式结构的对比

来源:互联网 发布:清水建设 知乎 编辑:程序博客网 时间:2024/06/04 21:03

一、单链表的整表创建:

单链表的创建不能像顺序循序结构一样通过数组来创建,它的创建应该根据实际情况来,因为单链表的生成是动态的,它从空表开始,一次建立各个元素结点并插入到链表中。

单链表的整表创建思路:
1)声明一个结点p和计数器变量i
2)初始化一个空链表
3)创建一个带头结点的单链表,这时头结点的指针指向null
4)循环实现后继结点的复制和插入

具体建立单链表的方法总结:
1、头插法:顾名思义,头插法就是从空表开始,生成新的结点,读取数据存放进这个新结点的数据域中,这个每一次生成的新结点都被插入到当前的表头上,直到整个单链表创建完成。
一句话,新生成的结点要放在表头的第一个位置。
2、尾插法:和头插法相反,尾插法从空表开始,生成新结点,读取数据存放进这个新结点的数据域中,这个每一次生成的新结点都被插入到当前单链表的尾部,直到整个链表创建完成。

单链表的整表删除思路:
1)声明两个结点p和q
2)将第一个结点赋值给p,将下一个结点赋值给q(声明结点q是因为在删除前一个结点的时候会将前一个结点中指向下一个结点的指针域也释放掉,通过q来存住下一个结点的位置,就能继续删除啦)
3)循环执行释放p和将q赋值给p的操作。
4)记得最后要将单链表释放掉,比如(*L)->next = NULL;

顺序存储结构总结:
优点:
a.不用为表中元素的逻辑关系去增加多余的存储空间,
b.能够快速存取任意位置的元素
缺点:
a.插入和删除操作需要大量移动元素,效率不高
b.线性表长度有较大变化是时,它的存储空间容量会难以确定。
c.顺序存储结构在申请空间时会大块的申请,容易造成碎片,碎片空间会被浪费。

二、顺序存储结构与单链表结构的优缺点对比
1、时间性能上
1)查找
顺序存储结构O(1)
单链表O(n)
2)插入和删除
顺序存储结构需要平均移动表长的一半,时间为O(n)
单链表在计算出某个位置的指针以后,插入和删除的时间为O(1)。
2、空间性能
顺序存储结构要先分配存储空间,容易造成内存空间不足或者浪费
单链表存储结构不需要分配存储空间。

简单总结,但是还是需要实际情况实际分析。
若线性表需要频繁进行查找,很少进行插入和删除,就适合顺序存储结构
如果情况相反,就比较适合单链表存储结构。
如果线性表中元素个数变化较大或者和根本不知道大小的话,就可以用单链表结构,
如果实现就知道线性表的大致长度,可以选择顺序存储结构。

0 0