Sha256: 89bf9a27e37a918c0e2946ddd791f85cde33bdf65127f1c03909581620b9d293

Contents?: true

Size: 1.56 KB

Versions: 290

Compression:

Stored size: 1.56 KB

Contents

class Node(object):
    def __init__(self, value, next=None, prev=None):
        self.value = value
        self.next = next
        self.prev = prev


class LinkedList(object):
    def __init__(self):
        self.head = None
        self.tail = None
        self.length = 0

    def push(self, value):
        new_node = Node(value)
        if not self.head:
            self.head = self.tail = new_node
        else:
            new_node.prev = self.tail
            self.tail.next = new_node
            self.tail = new_node
        self.length += 1

    def pop(self):
        node = self.tail
        if node is None or node.prev is None:
            self.head = self.tail = None
        else:
            self.tail = self.tail.prev
            self.tail.next = None
        self.length -= 1
        return node.value

    def shift(self):
        node = self.head
        if node is None or node.next is None:
            self.head = self.tail = None
        else:
            self.head = self.head.next
            self.head.prev = None
        self.length -= 1
        return node.value

    def unshift(self, value):
        new_node = Node(value)
        if not self.head:
            self.head = self.tail = new_node
        else:
            new_node.next = self.head
            self.head.prev = new_node
            self.head = new_node
        self.length += 1

    def __len__(self):
        return self.length

    def __iter__(self):
        current_node = self.head
        while (current_node):
            yield current_node.value
            current_node = current_node.next

Version data entries

290 entries across 290 versions & 1 rubygems

Version Path
trackler-2.2.1.176 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.175 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.174 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.173 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.172 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.171 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.170 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.169 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.167 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.166 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.165 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.164 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.163 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.162 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.161 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.160 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.159 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.158 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.157 tracks/python/exercises/linked-list/example.py
trackler-2.2.1.156 tracks/python/exercises/linked-list/example.py