《大话数据结构》

来源:互联网 发布: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来控制循环。其主要核心思想就是“工作指针后移’,这其实也是很多算法的常用技术。此时就有人说,这么麻烦,这数据结构有什么意思!还不如顺序存储结构呢。 世间万物总是两面的,有好的当然有不足,有差然就有优势。下而我们来看一下在单链表中的如何实现“插入”和“删除“。
0 0
原创粉丝点击