Autor Tópico: Python(Respondido-Obrigado)  (Lida 2683 vezes)

Offline kcnp

  • Usuário Ubuntu
  • *
  • Mensagens: 88
    • Ver perfil
Python(Respondido-Obrigado)
« Online: 25 de Outubro de 2007, 23:21 »
Alguém poderia me dizer como utilizar apontadores em python?É que em nenhum tutorial que eu encontrei achei sobre esse assunto. E apontadores são fundamentais para desenvolver arvores, por exemplo.
« Última modificação: 01 de Novembro de 2007, 13:51 por kcnp »
kcnp

Offline celsofaf

  • Usuário Ubuntu
  • *
  • Mensagens: 254
  • Ubuntu 12.10
    • Ver perfil
Re: Python
« Resposta #1 Online: 26 de Outubro de 2007, 00:16 »
Certa vez li que não há nem haverá ponteiros em Python, por ir contra a filosofia da linguagem. Mas não lembro de detalhes.

Agora, eu não entendo muito de orientação a objetos nem de Python, mas seria possível criar um objeto que possa ter um semelhante como uma "propriedade" (não sei o nome certo)? Se sim, já dá para ver como simular listas ligadas, árvores, etc. Mas é especulação minha.
« Última modificação: 26 de Outubro de 2007, 00:18 por celsofaf »
Rio de Janeiro, RJ, Brasil

Offline kcnp

  • Usuário Ubuntu
  • *
  • Mensagens: 88
    • Ver perfil
Re: Python
« Resposta #2 Online: 26 de Outubro de 2007, 00:27 »
Boa pergunta, por que se em python não tiver como implementar listas ligadas e arvores, concerta seria uma linguagem manca, por isso creio que deve ter um jeito, visto que sempre ouço falar bem de python, então, será que alguém poderia me ajudar?
kcnp

Offline Willdoidao

  • Usuário Ubuntu
  • *
  • Mensagens: 331
  • O que não me mata me deixa mais Forte!!!
    • Ver perfil
Re: Python
« Resposta #3 Online: 26 de Outubro de 2007, 08:18 »
"Penso 99 vezes e nada descubro. Deixo de pensar, mergulho no silêncio, e a verdade me é revelada." (Albert Einstein)
Abraços Will

Offline mailson

  • Usuário Ubuntu
  • *
  • Mensagens: 28
    • Ver perfil
Re: Python
« Resposta #4 Online: 26 de Outubro de 2007, 17:37 »
Estou aprendendo python agora e a melhor maneira de aprender é praticando.
Por isso eu estou estudando a cadeira de estrutura de dados usando essa linguagem. Estou nesse momento desenvolvendo uma árvore B+ e o que eu fiz foi criar uma classe em python e nessa classe existem variaveis que guardam outras classes. Dessa maneira tem como fazer

Vou mostrar um exemplo de uma simples árvore binária:
Definição da classe Arvore. Ela guarda duas variáveis que por sua vez guardam instancias de outras classes Arvore funcionando então como um ponteiro.
Código: [Selecionar]
class Arvore:
    # Aqui estao os "ponteiros" para cada no filho
    dir = None
    esq = None
    info = None

    def __init__(self, info):
        self.info = info

Definindo o procedimento em ordem que percorre toda a ávore.
Fiz esse procedimento para mostrar que isso realmente funciona
Código: [Selecionar]
def EmOrdem(raiz):
    if (raiz != None):
        EmOrdem(raiz.esq)
        print raiz.info, # A virgula no final eh para nao haver quebra de linha
        EmOrdem(raiz.dir)

Montando a ávore para poder usar o exemplo.
A árvore ficaria assim (desconsidere as setas azul):

Código: [Selecionar]
raiz = Arvore("D")

raiz.esq = Arvore("B")
raiz.dir = Arvore("E")
raiz.esq.esq = Arvore("A")
raiz.esq.dir = Arvore("C")

Chamando o procedimento EmOrdem e passando a raiz da árvore como parâmetro
Código: [Selecionar]
EmOrdem(raiz)

Saída:
A B C D E
« Última modificação: 26 de Outubro de 2007, 17:39 por mailson »