美文网首页
Python 练习单向链表倒排

Python 练习单向链表倒排

作者: wydnpu | 来源:发表于2018-03-21 21:59 被阅读0次

方案:

  1. LIFO : 入栈、出栈
  2. 递归
  3. 指向倒序

纯粹是练习,弄着玩的

class Node:
    def __init__(self, data, pn=None):
        self.data = data
        self._next = pn

    def __repr__(self):
        return str(self.data)

    def get_next(self):
        return self._next

    def set_next(self, pn):
        self._next = pn


def reserve_by_stack(node: Node):
    '''
    利用栈的LIFO特性
    '''
    stack = [node, ]
    n = node.get_next()
    while n is not None:
        stack.append(n)
        n = n.get_next()

    while len(stack):
        print(stack.pop())


def reserve_by_recursive(node: Node):
    '''
    递归
    '''
    if node is not None:
        reserve_by_recursive(node.get_next())
        print(node)


def reserve_by_reserve(node: Node) -> Node:
    '''
    修改指向
    '''
    pre = node
    last = pre.get_next()
    n = last
    pre.set_next(None)

    while last is not None:
        n = last
        last = n.get_next()
        n.set_next(pre)
        pre = n
    return n


def print_node(node: Node):
    while node is not None:
        print(node)
        node = node.get_next()


if __name__ == '__main__':
    n3 = Node(3)
    n2 = Node(2, n3)
    n1 = Node(1, n2)

    print("原始顺序:")
    print_node(n1)

    print("reserve_by_stack:")
    reserve_by_stack(n1)

    print("reserve_by_recursive:")
    reserve_by_recursive(n1)

    print("reserve_by_reserve:")
    reserved_node = reserve_by_reserve(n1)
    print_node(reserved_node)

相关文章

  • Python 练习单向链表倒排

    方案: LIFO : 入栈、出栈 递归 指向倒序 纯粹是练习,弄着玩的

  • python链表及算法

    实现了python单向链表及一些算法题

  • python 循环单向链表

    单向循环链表python实现 循环链表实现 头节点添加 尾节点添加 插入 删除 查找

  • JavaScript数据结构与算法-链表练习

    链表的实现 一. 单向链表 二. 双向链表 三. 循环链表 练习 一. 实现advance(n)方法,使当前节点向...

  • 8.单向链表SingleLinkList

    目录:1.单向链表的定义2.单向链表的图解3.单向链表定义操作4.单向链表的实现 1.单向链表的定义 2.单向链表...

  • 线性表-单向循环链表

    为了方便,本文介绍的单向循环链表不包含头节点 单向循环链表内容 单向循环链表的的定义 单向循环链表的创建 单向循环...

  • 10.单向循环链表SingleCycleLinkList

    目录:1.单向循环链表的定义2.单向循环链表的图解3.单向循环链表定义操作4.单向循环链表的实现 1.单向循环链表...

  • python中的树数据结构

    线性数据中的典型顺序表和链表已经讲完: 《顺序表数据结构在python中的应用》 《python实现单向链表数据结...

  • 数据结构与算法——线性表3

    线性表——单向循环链表 3、单向循环链表 在单向链表的基础上,单向链表的尾结点的Next指向链表的头部,就是为循环...

  • 04单向循环链表实现总结

    一、说说什么是单向循环链表? 人狠话不多. 上图. 单向循环链表就是这个样子!单向循环链表.png 与单向链表区别...

网友评论

      本文标题:Python 练习单向链表倒排

      本文链接:https://www.haomeiwen.com/subject/odwnqftx.html