【发布时间】:2015-05-06 12:10:55
【问题描述】:
前段时间我决定学习算法,但自学并不是一件容易的事,所以我正在阅读 Goodrich 的一本书Python 中的数据结构和算法,但我'我坚持练习 C-7.27
给出一个单链表类的递归实现,这样一个非空列表的实例存储它的第一个元素和对剩余元素列表的引用。提示:将头节点之后的节点链视为自己形成另一个列表。
我之前使用函数进行了递归,但在类级别上对我来说有点抽象。 我有这个基础结构,但我不知道如何继续。
class SinglyLinkedList:
'''A base class providing a single linked list representation'''
class _Node:
"""non public class for storing a singly linked node"""
__slots__ = '_element', '_next' # streamline memory usage
def __init__(self, element, next_el):
self._element = element
self._next = next_el
def __init__(self):
self._header = self._Node(None, None)
self._header._next = self._header
self._size = 0
def __len__(self):
return self._size
def is_empty(self):
return self._size == 0
据我了解,_Node._next 应该带有类似这样的 SinglyLinkedList 类:
def append(self, e):
newest = _Node(e, SinglyLinkedList())
但是现在用递归来修饰它,这样我就可以将它作为一个整体来描绘。有谁能帮帮我吗?
【问题讨论】:
标签: python algorithm class recursion