Ejemplo n.º 1
0
 def _append(self,x):
     """appends x onto end of the list
     post: x is appended onto the end of the list"""
     newNode=DListNode(x)
     #General Case (not empty)
     if self.head is not None:
         node=self.tail
         newNode.link = node.link
         node.link=newNode
         newNode.rev=node
     #Empty MEthod
     else:
         self.head=newNode
         
     self.tail=newNode    
     self.size+=1
Ejemplo n.º 2
0
    def insert(self,index,value):
       
        '''
        pre: 0<=index<self.size, value should be an integer or a float or a string
        post: insert a new node whose value is value at the position index in the list
        Exception: IndexError if pre violated
        '''
        #IndexError if Pre Violated
        if not (0 <= abs(index) <= self.size):
            raise IndexError
        #Convert the index to the positive version
        if index < 0:
            index = self.size+index
        
        #If the index is the last position
        # apply append directly 
        if index == self.size:
            self._append(value)
            return

        #Other Cases
        newNode = DListNode(value)
        #when index is the 0, first position
        if index == 0:
            node = self._find(0)
            newNode.link = self.head
            self.head = newNode
            node.rev = newNode
        #general case
        else:
            node = self._find(index)
            prev = node.rev
            newNode.link = prev.link
            prev.link = newNode
            newNode.rev = prev
            node.rev = newNode
        self.size += 1