关于单向动态链表的一些总结

来源:互联网 发布:魔方淘宝 编辑:程序博客网 时间:2024/06/10 08:44

所谓单向动态链表,顾名思义就是一条链,将内存零散空间通过指针串联起来,只有一个方向。作为一个工科学生,直入主题,不再啰嗦。

优点:1.采用动态内存分配,一个一个地开辟结点,可以利用到零散的内存空间,扩展性好。

            2.插入、删除元素比较灵活,不像数组那样要移动大量的元素。

缺点:1.查询效率太低,链表必须从开头一个接一个地访问,而不像数组那样可以随机访问(由于是单向)。

            2.排序十分麻烦。

            3.链表的生命周期较长,假若一个程序员没有free的习惯,易造成内存泄露。

关于链表在什么情况下适用:

举个例子:设计一个游戏,将游戏的地图用网格线划分,假设每个点上都有怪物、宝物,假设这个游戏最高上线人数为100000人,每个人都要去到每个点去与怪物发生战斗,也就是说每个点至少都要容纳100000个人的数据。假如我们用数组来存储这些人的数据,也就是每个点都要申请一个a[100000]的数组,然而并不是每时每刻都是有100000人在线的,就算有也不一定全都到一个点,因此这样大的数组是浪费的,然而你又不能不考虑到有100000人到一个点的情况(假如真的有,你的数组空间不够,就会崩溃了),这种情况下,动态数组就有用武之地了。只要有一个人上线到一个点,就扩展一个结点来存储他的数据;假若这个人从b点到c点,就从b点删除他的结点,再从c点开辟一个新结点来存储。除此之外,技能栏的数据结构也可以用到二叉链表来存储。


以上都是老师上课讲过,本人记下并增加一些理解。

本人大一,才疏学浅,望各位大神斧正。      

0 0
原创粉丝点击