Skip to content

Instantly share code, notes, and snippets.

@ptigas
Created May 28, 2012 17:21
Show Gist options
  • Save ptigas/2820165 to your computer and use it in GitHub Desktop.
Save ptigas/2820165 to your computer and use it in GitHub Desktop.
linked list implementation in python
class Node :
def __init__( self, data ) :
self.data = data
self.next = None
self.prev = None
class LinkedList :
def __init__( self ) :
self.head = None
def add( self, data ) :
node = Node( data )
if self.head == None :
self.head = node
else :
node.next = self.head
node.next.prev = node
self.head = node
def search( self, k ) :
p = self.head
if p != None :
while p.next != None :
if ( p.data == k ) :
return p
p = p.next
if ( p.data == k ) :
return p
return None
def remove( self, p ) :
tmp = p.prev
p.prev.next = p.next
p.prev = tmp
def __str__( self ) :
s = ""
p = self.head
if p != None :
while p.next != None :
s += p.data
p = p.next
s += p.data
return s
# example code
l = LinkedList()
l.add( 'a' )
l.add( 'b' )
l.add( 'c' )
print l
l.remove( l.search( 'b' ) )
print
print l
@dchirag
Copy link

dchirag commented Jul 10, 2019

Line 34 is is buggy and corrupting the backward list. It should be
node.next.prev = tmp

Also, for sake of completion, you need to release the instance of the node being deleted.
So add line after line 34
del p

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment