单链表操作之搜索

链表结构的顺序搜索和遍历是类似的,因为也必须从第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是链表结构中的节点数目。

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

 结束!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值