《大话数据结构》
来源:互联网 发布:superslide.min.js 编辑:程序博客网 时间:2024/05/21 21:33
单链表的读取
在线性表的顺序存储结构中,我们要计算任意一个元素的存储位置是很容易的。但在单链表中,由丁几第i个元素到底在没办法一开始就知道,必须得从头开始找。因此,对十单链表实现获取第i个元素的数据的操作GetElem,在算法,上、相对要麻烦一些。获得链表第i个数据的算法思路:
1.声明一个结点P指向链表第一个结点,初始化1从1开始。
2.当i时,就遍历链表,让p的指针向后移动,不断指向下一结点,j累加1。
3.若到链表末尾P为空,则说明第1个元素不存在。
4.否则查找成功,返回结点p的数据。
实现代码算法如下:
说白了,就是从头开始找,直到i个元素为止。这个算法的时间复杂度取决于i的位置,当i=i时,则不需遍历,第一个就取出数据了,而当 i = n 时则遍历r}-1次才可以。因此最坏情况的时间复杂度是}t司。由于单链表的结构中没有定义表长,所以不能事先知道要循环多少次,因此也就不方便使用for来控制循环。其主要核心思想就是“工作指针后移’,这其实也是很多算法的常用技术。此时就有人说,这么麻烦,这数据结构有什么意思!还不如顺序存储结构呢。 世间万物总是两面的,有好的当然有不足,有差然就有优势。下而我们来看一下在单链表中的如何实现“插入”和“删除“。
在线性表的顺序存储结构中,我们要计算任意一个元素的存储位置是很容易的。但在单链表中,由丁几第i个元素到底在没办法一开始就知道,必须得从头开始找。因此,对十单链表实现获取第i个元素的数据的操作GetElem,在算法,上、相对要麻烦一些。获得链表第i个数据的算法思路:
1.声明一个结点P指向链表第一个结点,初始化1从1开始。
2.当i时,就遍历链表,让p的指针向后移动,不断指向下一结点,j累加1。
3.若到链表末尾P为空,则说明第1个元素不存在。
4.否则查找成功,返回结点p的数据。
实现代码算法如下:
说白了,就是从头开始找,直到i个元素为止。这个算法的时间复杂度取决于i的位置,当i=i时,则不需遍历,第一个就取出数据了,而当 i = n 时则遍历r}-1次才可以。因此最坏情况的时间复杂度是}t司。由于单链表的结构中没有定义表长,所以不能事先知道要循环多少次,因此也就不方便使用for来控制循环。其主要核心思想就是“工作指针后移’,这其实也是很多算法的常用技术。此时就有人说,这么麻烦,这数据结构有什么意思!还不如顺序存储结构呢。 世间万物总是两面的,有好的当然有不足,有差然就有优势。下而我们来看一下在单链表中的如何实现“插入”和“删除“。
0 0
- 大话数据结构
- 大话数据结构
- 大话数据结构
- 大话数据结构
- 大话数据结构
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- 《大话数据结构》
- java修饰符的权限范围
- GIMMS NDVI3g V1.0发布
- Spark SQL电影分析案例
- iOS-图文表并茂,手把手教你GCD
- 1613-3-傅溥衍 总结《2016年11月2日》【连续三十三天总结】
- 《大话数据结构》
- 杭电OJ 1005
- vue-cnodejs学习-目录创建 环境配置
- leetcode_111. Minimum Depth of Binary Tree 二叉树的最小深度
- Lightoj 1342(求期望)
- EX03_01
- 《大话数据结构》
- Android Selector全解
- 杭电OJ 2000