链表结构的顺序搜索和遍历是类似的,因为也必须从第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是链表结构中的节点数目。
和数组不同,链表结构并不支持随机访问。因此,搜索一个排序好的单链表结构,并不能像是搜索一个排序好的数组那样高效。不过有一些方法可以将数据组织到其它类型的链表结构中,从而弥补这一缺陷。
结束!
本文探讨了链表结构中的顺序搜索与遍历过程,详细解释了如何在单链表中搜索目标项,以及搜索操作的线性特性。文章还讨论了链表结构不支持随机访问的特点,以及在排序链表中进行高效搜索的限制。
363

被折叠的 条评论
为什么被折叠?



