zoukankan      html  css  js  c++  java
  • 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


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

    ==============================================================================
  • 相关阅读:
    @MapperScan 注解和 mybatis.mapper-locations 配置两者缺一不可
    com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver的区别
    定时任务框架Quartz-(一)Quartz入门与Demo搭建
    js分页的实现代码
    圣杯布局中对left盒子设置负内边距-100%的一点解释
    前端小知识--为什么你写的height:100%不起作用?
    CSS:实现垂直居中的常用方法
    [jdk源码阅读系列]Java中System.arraycopy()的用法
    [jdk源码阅读系列]overflow-conscious code
    省选?
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2127849.html
Copyright © 2011-2022 走看看