Python(Respondido-Obrigado)

Iniciado por kcnp, 25 de Outubro de 2007, 23:21

tópico anterior - próximo tópico

kcnp

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.
kcnp

celsofaf

#1
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.
Rio de Janeiro, RJ, Brasil

kcnp

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

Willdoidao

"Penso 99 vezes e nada descubro. Deixo de pensar, mergulho no silêncio, e a verdade me é revelada." (Albert Einstein)
Abraços Will

mailson

#4
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.

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

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):


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

EmOrdem(raiz)


Saída:
A B C D E