链表创建、翻转、遍历等

1、链表创建、翻转及遍历

单链表反转详解参考:单链表反转_python版

class CreateNode(object):
    '''创建链表节点'''
    def __init__(self,data,next = None):
        self.data = data
        self.next = next


def create_list_link(list_length):
    '''创建链表'''
    head = None
    for count in range(1, list_length+1):
        head = CreateNode(count, head)
    return head

def traverse_list_link(head):
    '''遍历链表'''
    if head == None:
        print("链表为空", end='')
    probe = head
    # 输出节点内容,输出完后,单链表结构依然存在
    while probe != None:
        print(probe.data, end=", ")
        probe = probe.next
    print()

def overturn_list_link(head):
    '''翻转链表'''
    overturnhead = head
    pre = None
    while overturnhead != None:
        tempnext = overturnhead.next
        overturnhead.next = pre
        pre = overturnhead
        overturnhead = tempnext
    return pre

if __name__ == '__main__':
    '''测试翻转的链表为空, 输出结果“链表为空”'''
    head = create_list_link(0)
    overturnhead = overturn_list_link(head)
    traverse_list_link(overturnhead)
    '''测试翻转链表只有一个数值, 输出结果:1'''
    head = create_list_link(1)
    overturnhead = overturn_list_link(head)
    traverse_list_link(overturnhead)
    '''测试翻转链表多个数值(取值10), 输出结果:1,2,3,....10'''
    head = create_list_link(10)
    overturnhead = overturn_list_link(head)
    traverse_list_link(overturnhead)
    '''测试翻转链表多个数值(取值100), 输出结果:1,2,3,....98,99,100'''
    head = create_list_link(100)
    overturnhead = overturn_list_link(head)
    traverse_list_link(overturnhead)

链表其他操作

详细参考:数据结构–python实现链表结构

def create_table_link():
    head = None
    for count in range(1, 6):
        head = CreateNode(count, head)
    # 1、遍历链接
    probe = head
    # 输出节点内容,输出完后,单链表结构依然存在
    while probe != None:
        print(probe.data)  # 输出:5, 4, 3, 2, 1
        probe = probe.next

    # 2、搜索链接
    probe = head
    targetItem = 3  # 搜索链表结构中是否存在数据项为3的节点
    while probe != None and targetItem != probe.data:
        probe = probe.next
    if probe != None:
        print("目标数据项targetItem已搜索到")
    else:
        print("目标数据项targetItem不存在于当前链表结构中")


    # 输出节点内容,输出完后,单链表结构也销毁了
    # 因为在输出节点内容时,直接使用的head,输出完成后,head值为None,故输出完成后表链接销毁
    while head != None:
        print(head.data)  # 输出:5, 4, 3, 2, 1
        head = head.next

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值