赞
踩
node1 = Node("c",node3) 或者 node1 = Node("c",None) node1.next = node3
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) while head != None: print(head.data) head = head.next
遍历使用一个临时的指针变量,这个变量先初始化为链表结构的head指针,然后控制一个循环。
probe = head while probe != None: probe = probe.next
有两个终止条件:
一、空链表,不再有要检查的数据。
二、目标项等于数据项,成功找到。
probe = head while probe != None and targetItem != probe.data: probe = probe.next if probe != None: print("target is found") else: print("target is not in this linked structure")
probe = head while index > 0: probe = probe.next index -= 1 print(probe.data)
若目标项不存在,则返回False;否则替换相应的项,并返回True.
probe = head while probe != None and targetItem != probe.data: probe = probe.next if probe != None: probe.data = newItem return True else: return False
head = Node(newItem, head)
在单链表末尾插入一项必须考虑两点:
一、head指针为None,此时,将head指针设置为新的节点
二、head不为None,此时代码将搜索最后一个节点,并将其next指针指向新的节点。
newNode = Node(newItem) if head is None: head = newItem else: probe = head while probe.next != None: probe = probe.next probe.next = newNode
head = head.next
需要考虑两种情况:
一、只有一个节点,head指针设置为None
二、在最后一个节点之前没有节点,只需要倒数第二个节点的next指向None即可。
if head.next is None: head = None else: probe = head while probe.next.next != None: probe = probe.next probe.next = None
需要考虑两种情况:
一、该节点的next指针为None。这意味着,i>=n,因此,应该将新的项放在链表结构的末尾。
二、该节点的next指针不为None,这意味着,0<i<n,因此需将新的项放在i-1和i之间。
if head is None or index <=0: head =Node(newItem, head) else: probe = head while index > 1 and probe.next != None: probe = probe.next index -= 1 probe.next = Node(newItem, probe.next)
一、i<= 0——使用删除第一项的代码
二、0<i<n——搜索位于i-1位置的节点,删除其后面的节点
三、i>n——删除最后一个节点
if index <= 0 or head.next is None: head = head.next else: probe = head while index > 1 and probe.next.next != None: probe = probe.next index -= 1 probe.next = probe.next.next本文参考《数据结构(Python语言描述)》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。