栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python单链表实现头部添加、尾部添加、打印节点、反转链表等

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python单链表实现头部添加、尾部添加、打印节点、反转链表等

class ListNode(object):
    def __init__(self):
        self.val = None
        self.next = None


class ListNodeHandle:
    def __init__(self):
        self.cur_node = None
        self.k = 0
        self.tail_node = None

    def head_add(self, data):
        """头部添加节点"""
        node = ListNode()
        node.val = data
        node.next = self.cur_node
        if self.k == 0:
            self.tail_node = node
            self.k += 1
        self.cur_node = node
        return node

    def tail_add(self, data):
        """尾部添加节点"""
        node = ListNode()
        node.val = data
        node.next = None
        if self.k == 0:
            self.cur_node = node
            self.k += 1
        if self.tail_node:
            self.tail_node.next = node
        self.tail_node = node
        return node

    def print_all_node(self):
        tmp_node = self.cur_node
        while tmp_node:
            print(tmp_node.val)
            tmp_node = tmp_node.next

    def print_head_node(self):
        print("头节点:", self.cur_node.val)

    def print_tail_node(self):
        print("尾部节点", self.tail_node.val)

    def reverse_(self, nodelist):
        """反转链表"""
        list_ = []
        while nodelist:
            list_.append(nodelist.val)
            nodelist = nodelist.next
        result = ListNode()
        list_node_handle = ListNodeHandle()
        for val in list_:
            result = list_node_handle.head_add(val)
        return list_node_handle


if __name__ == '__main__':
    list_node_handle = ListNodeHandle()

    # 头部添加节点
    list_node_handle.head_add(123)
    list_node_handle.head_add(456)

    # 尾部添加节点
    list_node_handle.tail_add("abc")
    list_node_handle.tail_add("def")

    # 头部添加一个,尾部添加一个
    list_node_handle.head_add(789)
    list_node_handle.tail_add("hgk")

    # 打印所有节点
    list_node_handle.print_all_node()

    # 打印头部节点
    list_node_handle.print_head_node()

    # 打印尾部节点
    list_node_handle.print_tail_node()

    # 反转链表
    reverse_list_node_handle = list_node_handle.reverse_(list_node_handle.cur_node)
    print("反转链表成功")

    # 打印所有节点
    reverse_list_node_handle.print_all_node()

    # 打印头部节点
    reverse_list_node_handle.print_head_node()

    # 打印尾部节点
    reverse_list_node_handle.print_tail_node()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969352.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号