Skip to content

Instantly share code, notes, and snippets.

@sentinelleader
Forked from ptigas/gist:2820165
Created November 27, 2017 07:58
Show Gist options
  • Save sentinelleader/6f9c27a1ed495aa8568ce12c679902b5 to your computer and use it in GitHub Desktop.
Save sentinelleader/6f9c27a1ed495aa8568ce12c679902b5 to your computer and use it in GitHub Desktop.

Revisions

  1. @ptigas ptigas created this gist May 28, 2012.
    56 changes: 56 additions & 0 deletions gistfile1.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,56 @@
    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