Você está aqui: Python ::: Estruturas de Dados ::: Lista Ligada Simples

Como excluir um nó no início de uma lista singularmente encadeada em Python

Quantidade de visualizações: 703 vezes
Nesta dica mostrarei como podemos escrever um método remover_inicio() que remove e retorna o nó no início de uma lista encadeada simples em Python. É importante observar que o método exclui o primeiro nó e o retorna completo, inclui o valor que está incluído nele. Se a lista estiver vazia o método retorna o valor None para indicar lista vazia.

Vamos começar então com o código para a classe No da lista singularmente ligada (que salvei em um arquivo no_lista_singularmente_ligada.py):

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# classe No para uma lista singularmente encadeada ou
# ligada - Singly Linked List
class No:
  # construtor da classe No
  def __init__(self, info, proximo):
    self.info = info
    self.proximo = proximo

  # método que permite definir o conteúdo do nó
  def set_info(self, info):
    self.info = info

  # método que permite obter a informação de um nó 
  def get_info(self):
    return self.info

  # método que permite definir o campo próximo deste nó
  def set_proximo(self, proximo):
    self.proximo = proximo

  # método que permite obter o campo próximo deste nó
  def get_proximo(self):
    return self.proximo

  # retorna True se este nó apontar para outro nó
  def possui_proximo(self):
    return self.proximo != None

Veja que o código para a classe Nó não possui muitas firulas. Temos apenas um campo info, que guardará o valor do nó, e um campo próximo, que aponta para o próximo nó da lista, ou null, se este for o único nó ou o último nó da lista ligada.

Veja agora o código para a classe ListaLigadaSimples (lista_ligada_simples.py), com os métodos inserir_inicio(), remover_inicio() e exibir():

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# importa a classe No
from no_lista_singularmente_ligada import No

# classe ListaLigadaSimples   
class ListaLigadaSimples:
  # construtor da classe
  def __init__(self):
    self.inicio = None # nó inicial da lista

  # método que deleta um nó no início de uma lista ligada
  # este método retorna o nó excluído
  def remover_inicio(self):
    # a lista está vazia?  
    if self.inicio == None:
      return None
    else:
      # vamos excluir e retornar o primeiro nó da lista
      removido = self.inicio
      
      # a lista possui apenas um nó?
      if self.inicio.get_proximo() == None:
        # a lista agora ficará vazia
        self.inicio = None
      else:
        # o segundo nó passa a ser o início da lista  
        self.inicio = self.inicio.get_proximo()  

    # retorna o nó removido
    return removido

  # método que permite inserir um novo nó no início da lista
  def inserir_inicio(self, info):
    # cria um novo nó contendo a informação e que
    # não aponta para nenhum outro nó
    novo_no = No(info, None)
    
    # a lista ainda está vazia?
    if self.inicio == None:
      # o novo nó será o início da lista  
      self.inicio = novo_no
    else:
      # o novo nó aponta para o início da lista
      novo_no.set_proximo(self.inicio)
      # o novo nó passa a ser o início da lista
      self.inicio = novo_no

  # método que permite exibir todos os nós da lista
  # ligada simples (lista singularmente encadeada)
  def exibir(self):
    # aponta para o início da lista
    no_atual = self.inicio
    # enquanto o nó não for nulo
    while no_atual != None:
      # exibe o conteúdo do nó atual  
      print(no_atual.get_info())
      # pula para o próximo nó
      no_atual = no_atual.get_proximo()

E agora o código main() que insere alguns valores no início da nossa lista singularmente encadeada e testa o método remover_inicio():

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# importa a classe ListaLigadaSimples
from lista_singularmente_ligada import ListaLigadaSimples

# método principal  
def main():
  # cria uma nova lista encadeada simples
  lista = ListaLigadaSimples()

  print("Insere o valor 12 no início da lista")
  lista.inserir_inicio(12)
  print("Conteúdo da lista: ")
  lista.exibir()
  print("Insere o valor 30 no início da lista")
  lista.inserir_inicio(30)
  print("Conteúdo da lista: ")
  lista.exibir()

  print("Remove um nó no início da lista")
  removido = lista.remover_inicio()
  if removido == None:
    print("Não foi possível remover. Lista vazia")
  else:
    print("Nó removido:", removido.get_info())  
  print("Conteúdo da lista: ")
  lista.exibir()

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

c:\estudos_python>python estudos.py
Insere o valor 12 no início da lista
Conteúdo da lista:
12
Insere o valor 30 no início da lista
Conteúdo da lista:
30
12
Remove um nó no início da lista
Nó removido: 30
Conteúdo da lista:
12

Link para compartilhar na Internet ou com seus amigos:

Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico

Exercícios Resolvidos de Python - Como somar o primeiro e o último dígito de um número inteiro informado pelo usuário em Python

Quantidade de visualizações: 670 vezes
Pergunta/Tarefa:

Escreva um programa Python que pede para o usuário informar um número inteiro e mostre a soma do primeiro dígito com o último dígito. Atenção: você deve usar apenas os operadores matemáticos e a função log10().

Sua saída deverá ser parecida com:

Informe um número inteiro: 48763
A soma do primeiro e do último dígito é: 7
Resposta/Solução:

Veja a resolução comentada deste exercício usando Python:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# vamos importar o módulo Math
import math

# método principal
def main():
  # vamos pedir para o usuário informar um número inteiro
  numero = int(input("Informe um número inteiro: "))
    
  # vamos obter a quantidade (-1) de dígitos no número informado
  quant = int(math.log10(numero))
  primeiro_digito = (int)(numero / pow(10, quant))
  ultimo_digito = numero % 10
  	
  # soma o primeiro e o último dígito
  soma = primeiro_digito + ultimo_digito
	
  # mostra o resultado
  print("A soma do primeiro e do último dígito é: {0}".format(soma))
  
if __name__== "__main__":
  main()



Python ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como converter radianos em graus na linguagem Python

Quantidade de visualizações: 5200 vezes
Todos os métodos e funções trigonométricas em Python recebem seus argumentos em radianos, em vez de graus. Um exemplo disso é a função sin() do objeto math, no módulo math. Esta função recebe o ângulo em radianos e retorna o seu seno.

No entanto, há momentos nos quais precisamos retornar alguns valores como graus. Para isso é importante sabermos fazer a conversão de radianos para graus. Veja a fórmula abaixo:

\[Graus = Radianos \times \frac{180}{\pi}\]

Agora veja como esta fórmula pode ser escrita em código Python:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import math

# função principal do programa
def main():
  # valor em radianos
  radianos = 1.5
  # obtém o valor em graus
  graus = radianos * (180 / math.pi)
  # mostra o resultado
  print(radianos, "radianos convertidos para",
    "graus é", graus)
 
if __name__== "__main__":
  main()

Ao executarmos este código Python nós teremos o seguinte resultado:

1.5 radianos convertidos para graus é 85.94366926962348

Para fins de memorização, 1 radiano equivale a 57,2957795 graus.

Por fim, saiba que a linguagem Python nos oferece o método math.degrees() que nos permite converter ângulos radianos em graus. Meu propósito nesta dica foi mostrar a você como o cálculo de conversão pode ser escrito em Python. Em outras dicas dessa seção abordaremos o método math.degrees().


Python ::: Dicas & Truques ::: Data e Hora

Como obter o nome do mês da data atual no formato curto usando os métodos today() e strftime() da classe datetime do Python

Quantidade de visualizações: 10192 vezes
Nesta dica mostrarei como podemos combinar os métodos today() e strftime() da classe datetime do Python para retornar o nome do mês da data atual no formato curto, ou seja, se o mês for setembro, o valor retornado será "set".

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

from datetime import datetime
import locale

def main():
  # Configurações do usuário
  locale.setlocale(locale.LC_ALL, '')
 
  # Obtém um datatime da data e hora atual
  hoje = datetime.today()
 
  # Exibe o nome do mês no formato curto
  print(hoje.strftime("O mês é: %b"))  
 
if __name__== "__main__":
  main()

Ao executarmos este código nós teremos o seguinte resultado:

O mês é: mar


Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Serviços preliminares e instalações provisórias

Em um canteiro de obras:

A) São permitidas a entrada e a permanência de trabalhadores que não sejam compatíveis com a fase da obra.

B) É permitida a entrada rápida de trabalhadores que não estejam assegurados.

C) São proibidas a entrada e a permanência de quaisquer trabalhadores, independentemente da fase da obra.

D) É proibida a entrada de trabalhadores que não estejam assegurados, mas é permitida a permanência de trabalhadores que não sejam compatíveis com a fase da obra.

E) São proibidas a entrada e a permanência de trabalhadores que não estejam assegurados e que não sejam compatíveis com a fase da obra.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Java

Analise o seguinte código Java

public class Estudos {
  public static void main(String[] args) {
    int a = 3;
    System.out.println(++a * 8);
  }
}

Qual é o resultado de sua execução?

A) 24

B) 32

C) 72

D) 25
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Ações em estruturas: apresentação dos principais carregamentos na análise de estruturas convencionais

As variações de temperatura causam ações nas estruturas. Tanto isso é verdade que é recomendado, em lajes com área grande, as tão conhecidas juntas de dilatação para evitar que ocorram fissuras no concreto devido às deformações causadas pelo carregamento térmico. A ação devido às variações de temperatura é classificada como?

A) Ação acidental direta.

B) Ação permanente indireta.

C) Ação permanente direta.

D) Ação acidental indireta.

E) Ação excepcional.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Instalações prediais de águas pluviais

A chuva de projeto é o primeiro parâmetro a ser estimado para o projeto de instalações prediais. Como este é altamente probabilístico, uma abordagem a partir de um banco de dados consistente é utilizada na prática brasileira. Julgue as afirmações a seguir:

I. A chuva de projeto pode ser estimada a partir do ajuste das curvas IDF, que levam em conta a intensidade, a duração e a frequência com que ocorrem.

II. O tempo de retorno é um parâmetro que define o tempo para que a chuva retorne.

III. O coeficiente de deflúvio relaciona a porção de chuva incidente com o escoamento superficial gerado por esta.

IV. Os coeficientes de ajustes utilizados nas curvas IDF são frutos de pressupostos teóricos associados à mecânica dos fluidos.

Assinale a alternativa correta.

A) I e II são verdadeiras.

B) I e III são verdadeiras.

C) II e III são verdadeiras.

D) II e IV são verdadeiras.

E) III e IV são verdadeiras.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

valor = 5
for i in range(0, 4):
  valor++
  
print("O valor final é: {0}  ".format(valor))

A) O valor final é: 8

B) O valor final é: 9

C) Erro de SyntaxError: invalid syntax na linha 3

D) O valor final é: 7

E) Erro de SyntaxError: invalid syntax na linha 2
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 28 usuários muito felizes estudando em nosso site.