예제 #1
0
    def modificar(self, posicao, novoValor):
        try:
            assert posicao > 0

            if self.vazia():
                raise Exception(
                    'Lista vazia. Não é possível remover elementos')

            p = self.__head
            contador = 1

            while (p != None) and (contador < posicao):
                p = p.next
                contador += 1

            if p != None:
                p.data = novoValor
                return

            raise Exception('Posição inválida para a lista')

        except TypeError:
            raise Exception('A posição deve ser um valor inteiro')
        except AssertionError:
            raise Exception('Posição negativa não é válida')
        except:
            raise
예제 #2
0
    def elemento(self, posicao):
        try:
            assert posicao > 0

            if self.vazia():
                raise Exception('A lista está vazia')

            ponteiro = self.__head
            contador = 1

            # Andar na lista
            while ponteiro != None and contador < posicao:
                ponteiro = ponteiro.next
                contador += 1

            # Posição encontrada
            if ponteiro != None:
                return ponteiro.data

            raise Exception('A posição é inválida')

        except TypeError:
            raise Exception('A posição deve ser um valor inteiro')
        except AssertionError:
            raise Exception('Posição negativa não é válida')
        except:
            raise
예제 #3
0
    def remover(self, posicao):
        try:
            assert posicao > 0

            if self.vazia():
                raise Exception('Lista vazia. Não é possível remover elementos')

            p = self.__head
            contador = 1

            while (contador <= posicao - 1) and (p != None):
                anterior = p
                p = p.next
                contador += 1

            if p == None:
                raise Exception('Posição inválida para remoção')

            if posicao == 1:
                self.__head = p.next

            else:
                anterior.next = p.next
            
            self.__tamanho -= 1

        except TypeError:
            raise Exception('A posição deve ser um valor inteiro')
        except AssertionError:
            raise Exception('Posição negativa não é válida')
        except:
            raise
예제 #4
0
    def inserir(self, posicao, data):
        try:
            assert posicao > 0

            # CONDIÇÃO 1: Inserção se a lista estiver vazia
            if self.vazia():
                if posicao != 1:
                    raise Exception(
                        'A lista está vazia. Só poderá ser inserido na posição 1')

                self.__head = Node(data)
                self.__tamanho += 1
                return

            # CONDIÇÃO 2: Inserção na primeira posição em uma lista não vazia
            if posicao == 1:
                novo = Node(data)
                novo.next = self.__head
                self.__head = novo
                self.__tamanho += 1
                return

            # CONDIÇÃO 3: Inserção após a primeira posição em uma lista não vazia
            p = self.__head
            contador = 1

            while (contador < posicao-1) and (p != None):
                p = p.next
                contador += 1

            if p == None:
                raise Exception('A posição é inválida para inserção')

            novo = Node(data)
            novo.next = p.next
            p.next = novo
            self.__tamanho += 1

        except TypeError:
            raise Exception('A posição deve ser um valor inteiro')
        except AssertionError:
            raise Exception('Posição negativa não é válida')
        except:
            raise
예제 #5
0
    def modificar(self, novoValor):
        if self.vazia():
            raise Exception('A pilha está vazia')

        self.__head.data = novoValor
예제 #6
0
 def elemento(self):
     if (self.vazia()):
         raise Exception('A pilha está vazia')
     return self.__head.data
예제 #7
0
    def remover(self):
        if self.vazia():
            raise Exception('A pilha está vazia')

        self.__head = self.__head.next
        self.__tamanho -= 1
예제 #8
0
    def head(self):
        if self.vazia():
            raise Exception('A pilha está vazia')

        return self.__head