python实现的列表操作

纯属练手呵呵。

class Node:
   """Single node in a data structure"""

   def __init__(self, data):
      """Node constructor"""
      
      self._data = data
      self._nextNode = None
    
   def __str__(self):
      """Node data representation"""

      return str(self._data)      

class List:
   """Linked list"""

   def __init__(self):
      """List constructor"""

      self._firstNode = None
      self._lastNode = None

   def __str__(self):
      """List string representation"""

      if self.isEmpty():
         return "empty"

      currentNode = self._firstNode
      output = []

      while currentNode is not None:
         output.append(str(currentNode._data))
         currentNode = currentNode._nextNode

      return " ".join(output)      

   def insertAtFront(self, value):
      """Insert node at front of list"""

      newNode = Node(value)

      if self.isEmpty():  # List is empty
         self._firstNode = self._lastNode = newNode
      else:   # List is not empty
         newNode._nextNode = self._firstNode
         self._firstNode = newNode
        
   def insertAtBack(self, value):
      """Insert node at back of list"""

      newNode = Node(value)

      if self.isEmpty():  # List is empty
         self._firstNode = self._lastNode = newNode
      else:  # List is not empty
         self._lastNode._nextNode = newNode
         self._lastNode = newNode

   def removeFromFront(self):
      """Delete node from front of list"""

      if self.isEmpty():  # raise exception on empty list
         raise IndexError, "remove from empty list"

      tempNode = self._firstNode

      if self._firstNode is self._lastNode:  # one node in list
         self._firstNode = self._lastNode = None
      else:
         self._firstNode = self._firstNode._nextNode

      return tempNode

   def removeFromBack(self):
      """Delete node from back of list"""

      if self.isEmpty():  # raise exception on empty list
         raise IndexError, "remove from empty list"
     
      tempNode = self._lastNode

      if self._firstNode is self._lastNode:  # one node in list
         self._firstNode = self._lastNode = None
      else:
         currentNode = self._firstNode

         # locate second-to-last node
         while currentNode._nextNode is not self._lastNode:
               currentNode = currentNode._nextNode
               
         currentNode._nextNode = None
         self._lastNode = currentNode

      return tempNode
    
   def isEmpty(self):
      """Returns true if List is empty"""

      return self._firstNode is None

  


==============================================================================

本博客已经废弃,不在维护。新博客地址:http://wenchao.ren


我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员

==============================================================================
原文地址:https://www.cnblogs.com/rollenholt/p/2127849.html