Skip to content

Instantly share code, notes, and snippets.

@scriptpapi
Created May 14, 2018 06:06
Show Gist options
  • Save scriptpapi/9c76196ff8ed46b634cb0b06f803fb27 to your computer and use it in GitHub Desktop.
Save scriptpapi/9c76196ff8ed46b634cb0b06f803fb27 to your computer and use it in GitHub Desktop.
Basic implementation of doubly linked list
# 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