zoukankan      html  css  js  c++  java
  • 单链表操作之搜索

    链表结构的顺序搜索和遍历是类似的,因为也必须从第1个节点开始且沿着链表直到遇到哨兵。下面例子可能会遇到两个哨兵:

    • 空链接,表明不再有需要检查的数据。
    • 等于目标项的一个数据项,表明一次成功的搜索。
    # coding: utf-8
    class Node(object):
        def __init__(self, data, next=None):
            self.data = data
            self.next = next
    
    
    head = None
    
    for count in range(1,6):
        head = Node(count, head)
        print head.data, head.next,head
    
    targetItem = 2
    
    probe = head
    while probe != None and targetItem != probe.data:
        probe = probe.next
    if probe != None:
        print "目标被找到"
    else:
        print "没找到目标"

    毫不奇怪,平均情况下,对于单链表结构的顺序搜索是线性的。

    遗憾的是,访问一个链表结构中的第i项,也是一次顺序搜索操作。这是因为,必须从第1个节点开始并统计链接的数目,直到遇到第i个节点。可以假设0<=i<n,其中n是链表结构中的节点数目。

    和数组不同,链表结构并不支持随机访问。因此,搜索一个排序好的单链表结构,并不能像是搜索一个排序好的数组那样高效。不过有一些方法可以将数据组织到其它类型的链表结构中,从而弥补这一缺陷。

     结束!

  • 相关阅读:
    洛谷P1908《逆序对》
    洛谷P3884《[JLOI2009]二叉树问题》
    最近公共祖先 LCA
    洛谷P1531《I Hate It》
    洛谷P1563「NOIP2016」《玩具谜题》
    乘法逆元求法
    CF56E 【Domino Principle】
    CF638C 【Road Improvement】
    Luogu
    2018.8.7提高B组模拟考试
  • 原文地址:https://www.cnblogs.com/aaronthon/p/13613559.html
Copyright © 2011-2022 走看看