《大话数据结构》

来源:互联网 发布:密码破解器软件 编辑:程序博客网 时间:2024/05/21 19:27

单链表的整表删除


当我们不打算使用这个单链表时,我们需要把它销毁,其实也就是在内存中将它释放掉,以便于留出空间给其他程序或软件使用。单链表整表删除的算法思路如一巳
1.声明一结点p和q.
2.将第一个结点赋值给p.
3.循环.
·将下一结点赋值给q。
·释放p。
·q赋值给p。


这段算法代码里,常见的错误就是有同学会觉得q变量没有存在的必要。在循环体内直接写 free(p); p = p -> next ;即可。可这样会带来什么问题要知道P是一个结点,它除了有数据域,还有指针域。你在做free(p)时,其实是在对它整个结点进行删除和内存释放的工作。这就好比皇帝快要病死了,却还没有册封太子,他儿子五六个,你说要是你脚一蹬倒是解脱了,这国家昨办,你那几个儿子咋办?这要是为了辛位,什么亲兄弟血肉情都成了浮云,一定会打起来。所以不行,皇帝不能马上死,得先把遗嘱写好,i;}清楚,哪个儿子做太子才行。而这个遗嘱就是变量q的作用,它使得下一个结点是谁得到了记录,以便于等当前结点释放后,把下一结点拿问来补充。好了,说了这么多,我们可以来简单总结一下。

通过上面的对比,我们可以得出一些经验性的结论:若线性表需要频繁杳找、很少进行插入和删除操作时,宣采用顺序存储结构。若需要频繁插入和删除时,宜采用单链表结构。比如说游戏开发中,对十用户册的个人信息,除r注册时插入数据外,绝大多数情况都是读表,随着玩家的游戏过程中、可能会随时增加或删除,此时再用顺序存储就不太合适了,单链表结构就}j以大展拳脚。当然,这只是简单的类比,现实中的软件开发,要考虑的问题会复杂得多.当线性表中的元素个数变化较大或者根本不知道有多大时,最好用单链表结构,这样可以不需要考虑存储空间的大小问题。rf}l如果事先知道线性表的大致长度,比如一年伦个月,一周就是星期,至星期日共七天,这种用顺序存储结构效率会高很多。总之,线性表的顺序存储结构和单链表结构各有其优缺点,不能简单的说哪个好,哪个不好,需要根据实际情况,来综合平衡采用哪种数据结构更能满足和这}I}需求和性能。



0 0
原创粉丝点击