Created
May 14, 2018 06:06
-
-
Save scriptpapi/9c76196ff8ed46b634cb0b06f803fb27 to your computer and use it in GitHub Desktop.
Basic implementation of doubly linked list
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Basic implementation of doubly linked list | |
class Node: | |
def __init__(self, data): | |
self.data = data | |
self.next = None | |
self.prev = None | |
def getData(self): | |
return self.data | |
def setData(self, newData): | |
self.data = newData | |
def getNext(self): | |
return self.next | |
def setNext(self, newData): | |
self.next = newData | |
def getPrev(self): | |
return self.prev | |
def setPrev(self, newData): | |
self.prev = newData | |
class LinkedList: | |
def __init__(self): | |
self.head = None | |
self.tail = None | |
self.size = 0 | |
def isEmpty(self): | |
return self.head is None | |
def size(self): | |
return self.size | |
def append(self, newData): | |
self.size += 1 | |
newNode = Node(newData) | |
if self.head is None: | |
self.head = newNode | |
self.tail = newNode | |
else: | |
newNode.setPrev(self.tail) | |
newNode.setNext(None) | |
self.tail.setNext(newNode) | |
self.tail = newNode | |
def remove(self, data): | |
self.size -= 1 | |
curr = self.head | |
while curr is not None: | |
if curr.data == data: | |
if curr.prev is not None: | |
curr.getPrev.setNext(curr.getNext) | |
curr.getNext.setPrev(curr.getPrev) | |
else: | |
self.head = curr.getNext | |
curr.getNext.setPrev(None) | |
curr = curr.getNext | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment