《大话数据结构》
来源:互联网 发布:密码破解器软件 编辑:程序博客网 时间: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
- 大话数据结构
- 大话数据结构
- 大话数据结构
- 大话数据结构
- 大话数据结构
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- android本地、sd卡保存对象或集合,以及读取该对象
- 《大话数据结构》
- Logback 将日志分级别打印
- ViewPager+Fragment 实现某个Fragment处于可见时候加载数据
- android ViewPager实现广告图轮播
- 《大话数据结构》
- 在Windows环境给Oracle打补丁
- 杭电OJ 2001
- Android关于OnTouch 和OnClick同时调用冲突的解决方案
- Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性
- iOS 记住网页(UIWebView)上次浏览的位置
- 自定义网桥
- Warning:Gradle version 2.10 is required. Current version is 2.4. If using the gradle wrapper, try ed
- cxf和spring开发web service--服务器端