Пример #1
0
 def insereNoComeco(self, valor):
     novoNo = No(valor)
     if self.isEmpty():
         self.primeiroNo = self.ultimoNo = novoNo
     else:
         novoNo.setProx(self.primeiroNo)
         self.primeiroNo = novoNo
Пример #2
0
    def add_first(self, valor):
        no = No(valor)
        no.proximo = self.inicial
        self.inicial = no

        proximo = self.inicial.proximo
        proximo.anterior = no
Пример #3
0
 def Exp1Linha(self):
     noExp1Linha = No()
     # Exp1’ -> < Exp2 Exp1’ | <= Exp2 Exp1’ | > Exp2 Exp1’ | >= Exp2 Exp1’ | == Exp2 Exp1’ | != Exp2 Exp1’
     if (self.eat(Tag.OP_LT) or self.eat(Tag.OP_LTE) or self.eat(Tag.OP_GT)
             or self.eat(Tag.OP_GTE) or self.eat(Tag.OP_EQ)
             or self.eat(Tag.OP_NE)):
         noExp2 = self.Exp2()
         noExp1LinhaFilho = self.Exp1Linha()
         if (noExp1LinhaFilho.getTipo()
                 in (Tag.TIPO_VAZIO, noExp2.getTipo())
                 and noExp2.getTipo() == Tag.NUMERICO):
             noExp1Linha.setTipo(Tag.NUMERICO)
         else:
             noExp1Linha.setTipo(Tag.ERROR)
         return noExp1Linha
     elif (self.token.getNome()
           in (Tag.KW_OR, Tag.KW_AND, Tag.KW_CLS_PARENTH,
               Tag.KW_SCORE_COMMA, Tag.KW_COMMA)):
         noExp1Linha.setTipo(Tag.TIPO_VAZIO)
         return noExp1Linha
     else:
         self.sinalizaErroSintatico(
             'Esperado "< , <= , > , >= , == , !=", encontrado ' + '"' +
             self.token.getLexema() + '"')
         noExp1Linha.setTipo(Tag.ERROR)
         return noExp1Linha
Пример #4
0
 def addFirst(self, valor):
     if self.tail is None:
         self.head = self.tail = No(valor)
     else:
         novo = No(valor)
         novo.proximo = self.head
         self.head = novo
Пример #5
0
 def Exp2Linha(self):
     noExp2Linha = No()
     # Exp2’ -> + Exp3 Exp2’ | - Exp3 Exp2’
     if (self.eat(Tag.OP_ADD) or self.eat(Tag.OP_SUB)):
         noExp3 = self.Exp3()
         noExp2LinhaFilho = self.Exp2Linha()
         if (noExp2LinhaFilho.getTipo()
                 in (Tag.TIPO_VAZIO, noExp3.getTipo())
                 and noExp3.getTipo() == Tag.NUMERICO):
             noExp2Linha.setTipo(Tag.NUMERICO)
             return noExp2Linha
         else:  ####
             noExp2Linha.setTipo(Tag.ERROR)
             return noExp2Linha
     elif (self.token.getNome()
           in (Tag.OP_LT, Tag.OP_LTE, Tag.OP_GT, Tag.OP_GTE, Tag.OP_EQ,
               Tag.OP_NE, Tag.KW_OR, Tag.KW_AND, Tag.KW_CLS_PARENTH,
               Tag.KW_SCORE_COMMA, Tag.KW_COMMA)):
         noExp2Linha.setTipo(Tag.TIPO_VAZIO)
         return noExp2Linha
     else:
         self.sinalizaErroSintatico('Esperado "+ , -", encontrado ' + '"' +
                                    self.token.getLexema() + '"')
         noExp2Linha.setTipo(Tag.ERROR)
         return noExp2Linha
Пример #6
0
 def append(self, valor):
     if self.inicial is None and self.final is None:
         self.inicial = self.final = No(valor)
     else:
         self.final.proximo = no = No(valor)
         no.anterior = self.final
         self.final = self.final.proximo
Пример #7
0
	def adicionar(self, valor):
		no = No( valor )
		if self.tamanho == 0:
			self.topo = no
		else: 
			no.proximo = self.topo
			self.topo = no
		self.tamanho += 1
 def inserir(self, valor):
     no = No(valor)
     if self.tamanho == 0:
         self.inicio = no
     else:
         no.proximo = self.inicio
         self.inicio = no
     self.tamanho += 1
Пример #9
0
	def push(self,elemento):
		inserido = No(elemento)
		if(not self.topo):
			self.topo = inserido
		else:
			topo_antigo = self.topo
			inserido.proximo = topo_antigo
			self.topo = inserido
Пример #10
0
 def push(self, valor):
     if self.is_full() is False:
         no = No(valor)
         no.proximo = self.inicial
         self.inicial = no
         self.quantidade += 1
     else:
         raise ErroNaPilha()
Пример #11
0
 def addpilha(self, valor):
     no = No(valor)
     if self.verificavazio():
         self.primeiro = no
     else:
         aux = self.primeiro
         self.primeiro = no
         no.proximo = aux
     self.tamanho += 1
Пример #12
0
 def addFinal(self, e):
     """Insere elemento no FINAL da lista"""
     self.indice = None  # eu digo que o indice é vaziu e insiro na lista no inicio da listaencadeada
     if self._rabo is None:
         self._cabeca = self._rabo = No(e)
     else:
         self._rabo.proximo = No(e)
         self._rabo = self._rabo.proximo
     self.size += 1  # incrementa o valor que já existia no size
 def push_back(self, valor):
     if self.full is False:
         if self.inicial is None and self.final is None:
             self.inicial = self.final = No(valor)
         else:
             self.final.proximo = no = No(valor)
             no.anterior = self.final
             self.final = self.final.proximo
         self.quantidade += 1
Пример #14
0
 def adicionarNoFinal(self, valor):
     if self.fim:
         aux = self.fim
         while (aux.anterior):
             aux = aux.anterior
         aux.anterior = No(valor)
     else:
         self.fim = No(valor)
     self.tamanho += 1
Пример #15
0
 def append(self, valor):
     if self.inicial is None and self.final is None:
         self.inicial = self.final = No(valor)
     else:
         self.final.proximo = no = No(valor)
         no.anterior = self.final
         self.final = self.final.proximo
     self.quantidade_de_itens += 1
     self._organize()
Пример #16
0
 def add(self,no):
     q = No(no)
     p = self._head
     if p == None:
         self._head=q
     else:
         while p.get_prox() != None:
             p=p.get_prox()
         p.set_prox(No(q))
Пример #17
0
 def stack_push(self, value):
     no = No(value)
     if self.is_empty():
         self.top = no
     else:
         aux = self.top
         self.top = no
         no.next = aux
     self.size += 1
Пример #18
0
 def adicionar (self, valor):
     if self.inicio:
         aux = self.inicio
         while(aux.proximo):
             aux = aux.proximo
         aux.proximo = No(valor)
     else:
         self.inicio = No(valor)
     self.tamanho = self.tamanho +1
Пример #19
0
 def adicionar(self, valor):
     no = No(valor)
     if self.listaVazia():
         self.inicio = no
         self.fim = no
     else:
         no.anterior = self.fim
         no.proximo = None
         self.fim.proximo = no
         self.fim = no
 def adicionar(self, elemento):
     #adiciona elementos ao fim da lista
     if self.primeiro:
         ponteiro = self.primeiro
         while(ponteiro.proximo):
             ponteiro = ponteiro.proximo
         ponteiro.proximo = No(elemento)
     else:
         self.primeiro = No(elemento)
     self.tamanho = self.tamanho +1
 def adicionar(self, valor):
     no = No(valor)  #No recebe o input do main
     if self.vazio(
     ):  #Se a pilha estiver vazio o primeiro item a entrar nela é o valor inserido
         self.primeiro = no
     else:
         auxiliar = self.primeiro  #Caso a pilha não estaja vazia ele inseri o valor digita sobre o valor anterior, tornando o como primeiro
         self.primeiro = no
         no.proximo = auxiliar
     self.tamanho += 1  #Concatena cada vez que adicionar um valor na pilha
Пример #22
0
    def add_first(self, valor):
        no = No(valor)
        no.proximo = self.inicial
        self.inicial = no

        proximo = self.inicial.proximo
        proximo.anterior = no
        self.quantidade_de_itens -= 1
        self.saltar = False
        self._organize()
Пример #23
0
 def inserirNo2(self, noBase, value):
     if (value > noBase.value):
         if noBase.right is None:
             noBase.right = No(value, noBase)
         else:
             self.inserirNo2(noBase.right, value)
     else:
         if noBase.left is None:
             noBase.left = No(value, noBase)
         else:
             self.inserirNo2(noBase.left, value)
Пример #24
0
 def addInicio(self, e):
     """Insere um valor no início da lista."""
     # Cria um novo objeto do tipo "no" recebendo valor
     self.indice = None  # eu digo que o indice é vaziu e insiro na lista no inicio da listaencadeada
     novo = No(e)
     if self._cabeca is None:
         self._rabo = novo
     else:
         novo.proximo = self._cabeca
         self._cabeca = novo
     self.size += 1  #incrementa o valor que já existia no size
Пример #25
0
 def adicionarNoInicio(self, valor):
     no = No(valor)
     if self.tamanho == 0:
         self.inicio = no
         self.fim = no
     else:
         aux = self.inicio
         no.proximo = aux
         aux.anterior = no
         self.inicio = no
     self.tamanho += 1
 def inserir(self, posicao, elemento):
     #insere um elemento na posição indicada, movendo os outros (caso preciso)
     no = No(elemento)
     if posicao == 1:
         no.proximo = self.primeiro
         self.primeiro = no
     else:
         ponteiro = self.getno(posicao-2)
         no.proximo = ponteiro.proximo
         ponteiro.proximo = no
     self.tamanho = self.tamanho + 1
Пример #27
0
 def adicionarFim(self, valor):
     no = No(valor)
     if self.tamanho == 0:
         self.inicio = no
         self.fim = no
     else:
         aux = self.fim
         no.anterior = aux
         aux.proximo = no
         self.fim = no
     self.tamanho = self.tamanho + 1
Пример #28
0
 def adicionarNoFim( self, valor ) :
     no = No( valor )
     if self.tamanho == 0 :
         self.primeiro = no
         self.ultimo = no
     else:
         aux = self.ultimo
         no.anterior = aux
         aux.proximo = no
         self.ultimo = no
     self.tamanho += 1
 def prepend(self, v):
     """Adiciona um nó no começo da lista"""
     #criar um nó com v
     no = No(v)
     #apontar para head
     if self.head is None:
         self.head = self.tail = no
     else:
         no.next = self.head
     #head apontar para novo nó
     self.head = no
Пример #30
0
 def adicionar(self, valor):
     if self.inicio:
         cursor = self.inicio
         while cursor.proximo:
             cursor = cursor.proximo
         cursor.proximo = No(valor, cursor)
         self.fim = cursor.proximo
     else:
         self.inicio = No(valor, None)
         self.fim = self.inicio
     self.tamanho += 1
    def push_front(self, valor):
        if self.full is False:
            if self.inicial is None and self.final is None:
                self.inicial = self.final = No(valor)
            else:
                no = No(valor)
                no.proximo = self.inicial
                self.inicial = no

                proximo = self.inicial.proximo
                proximo.anterior = no
            self.quantidade += 1