第1关:实验6 单链表的插入

class LinkNode: #单链表结点类
def __init__(self,data=None): #构造函数
self.data=data #data属性
self.next=None #next属性
class LinkList: #单链表类
def __init__(self): #构造函数
self.head=LinkNode() #头结点head
self.head.next=None
# 第1关
def myinsertHead(head, insData):
'''
在此处完成任务,实现在head为表头的链表的头插数据元素insData的功能
:param head:
:param insData:
:return:
'''
# // 请在这里补充代码,完成本关任务
# / ** ** ** ** ** Begin ** ** ** ** * /
# / ** ** ** ** ** End ** ** ** ** ** /
def myinsertTail(head, insData):
'''
在此处完成任务,在head为表头的单链表表尾插入数据元素insData
:param head:
:param insData:
:return:
'''
# // 请在这里补充代码,完成本关任务
# / ** ** ** ** ** Begin ** ** ** ** * /
# / ** ** ** ** ** End ** ** ** ** ** /
def myprintList(head):
'''
在此处完成任务,输出head为表头链表中的数据
:param head:
:return:
'''
# // 请在这里补充代码,完成本关任务
# / ** ** ** ** ** Begin ** ** ** ** * /
# / ** ** ** ** ** End ** ** ** ** ** /
第2关:实验7 单链表查找

class LinkNode: #单链表结点类
def __init__(self,data=None): #构造函数
self.data=data #data属性
self.next=None #next属性
class LinkList: #单链表类
def __init__(self): #构造函数
self.head=LinkNode() #头结点head
self.head.next=None
# 第二关代码
def locate(L, data):
'''
请在此处填入代码,在头结点为L的链表中查找 与data值相等的第一个结点,若找到该结点的前一结点的指针,否则返回NULL
:param L:
:param data:
:return:
'''
# // 请在这里补充代码,完成本关任务
# / ** ** ** ** ** Begin ** ** ** ** * /
# / ** ** ** ** ** End ** ** ** ** ** /
第3关:实验8 单链表查找及交换

class LinkNode: #单链表结点类
def __init__(self,data=None): #构造函数
self.data=data #data属性
self.next=None #next属性
class LinkList: #单链表类
def __init__(self): #构造函数
self.head=LinkNode() #头结点head
self.head.next=None
def locate(L, data):
p = L.next
pre = L
while p != None:
if p.data == data:
return pre
pre = p
p = p.next
return None
# 第三关代码
def locateAndChange(L, data):
'''
请在此处填入代码,在头结点为L的链表中查找 与data值相等的第一个结点,若能找到该结点,则将该结点的值与前驱结点的值交换
若未找到与data值相等的结点,则返回值为-1,若找到的结点无前驱结点,则返回值为0,否则返回值为前驱结点的值
:param L:
:param data:
:return:
'''
# // 请在这里补充代码,完成本关任务
# / ** ** ** ** ** Begin ** ** ** ** * /
# / ** ** ** ** ** End ** ** ** ** ** /
第4关:实验9 单链表查找及删除

class LinkNode: #单链表结点类
def __init__(self,data=None): #构造函数
self.data=data #data属性
self.next=None #next属性
class LinkList: #单链表类
def __init__(self): #构造函数
self.head=LinkNode() #头结点head
self.head.next=None
def locate(L, data):
p = L.next
pre = L
while p != None:
if p.data == data:
return pre
pre = p
p = p.next
return None
# 第四关代码
def deleteData(L, data):
'''
请在此处填入代码,在头结点为L的链表中查找 与data值相等的第一个结点,若能找到该结点,则删除该结点,返回1
若未找到与data值相等的结点,则返回值为0
:param L:
:param data:
:return:
'''
# // 请在这里补充代码,完成本关任务
# / ** ** ** ** ** Begin ** ** ** ** * /
# / ** ** ** ** ** End ** ** ** ** ** /
第5关:实验10 链表逆置

class LinkNode: #单链表结点类
def __init__(self,data=None): #构造函数
self.data=data #data属性
self.next=None #next属性
class LinkList: #单链表类
def __init__(self): #构造函数
self.head=LinkNode() #头结点head
self.head.next=None
# 第五关代码
def reverseList_link(L):
'''
请在此处填入代码,实现链表逆置功能
:param L:
:return:
'''
# // 请在这里补充代码,完成本关任务
# / ** ** ** ** ** Begin ** ** ** ** * /
prev = None
current = L.next
while current is not None:
next_node = current.next
current.next = prev
prev = current
current = next_node
L.next = prev
return L
# / ** ** ** ** ** End ** ** ** ** ** /