数据结构 单链表实验-python

第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 ** ** ** ** ** /

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值