These are excerpts shown as snippets from a main file named ex14/dllist.py. They generally only make sense in the context of the exercise text, but they're shown here separated by H2 heading tags for audible readers like NV Access.
class DoubleLinkedListNode(object):
def __init__(self, value, nxt, prev):
self.value = value
self.next = nxt
self.prev = prev
def __repr__(self):
nval = self.next and self.next.value or None
pval = self.prev and self.prev.value or None
return f"[{self.value}, {repr(nval)}, {repr(pval)}]"
class DoubleLinkedList(object):
def __init__(self):
self.begin = None
self.end = None
def push(self, obj):
"""Appends a new value on the end of the list."""
def pop(self):
"""Removes the last item and returns it."""
def shift(self, obj):
"""Actually just another name for push."""
def unshift(self):
"""Removes the first item (from begin) and returns it."""
def detach_node(self, node):
"""You'll need to use this operation sometimes, but mostly
inside remove(). It should take a node, and detach it from
the list, whether the node is at the front, end, or in the middle."""
def remove(self, obj):
"""Finds a matching item and removes it from the list."""
def first(self):
"""Returns a *reference* to the first item, does not remove."""
def last(self):
"""Returns a reference to the last item, does not remove."""
def count(self):
"""Counts the number of elements in the list."""
def get(self, index):
"""Get the value at index."""
def dump(self, mark):
"""Debugging function that dumps the contents of the list."""