Obrigado ao autor pelo excelente artigo!
há outros"quem-que"? é uma ideia meio incompleta.
Portanto, os recursos de um nó para uma lista duplamente vinculada serão semelhantes aos de um nó com vínculo simples, exceto pelo fato de que você ainda precisa manipular um ponteiro para o nó anterior.
É necessário processar um ponteiro para o nó anterior para ter os recursos de um nó com um único vínculo? O autor entendeu o que queria transmitir, mas a redação em si não é muito boa.....
Fig.3 Nós de uma lista bilinked em anel
1) o ponteiro mais alto - a seta está um pouco torta
2) Entendo que esse pode ser o estilo dos artigos, mas a descrição da figura está em uma fonte muito pequena e um pouco fraca (opinião pessoal de quem tem visão ruim).
Também precisaremos de um nó que atenda às necessidades de uma lista duplamente vinculada. Ele difere da formaanterior porque contém outro ponteiro que se refere ao nóanterior. E, naturalmente, esse nó do elemento principal da lista será igual a NULL.
1) Da forma anterior- de quê? Quanto anterior? Por que eu deveria pesquisar se, por anterior, o autor quer dizer "Nó de uma lista com um único vínculo", ou talvez eu esteja errado.
2) "onó do elemento principal da lista será igual a NULL". Nó ou ponteiro?Talvez em vista da afirmação anterior "Você pode armazenar nós, não elementos, em uma lista", seria mais correto dizer:
"um dos ponteiros do nó principal deuma lista duplamente vinculadaserá igual a NULL" .
Mas no nó final, o link para o próximo nó não estará vazio, pois será preenchido com o ponteiro principal.
1) não haverá referência - não haverá who-what ???? os casos não se mantêm
2) Mas no nó final, não haverá referência ao próximo nó vazio (who-what ????). pensamento inacabado
3) Ela (a referência) será preenchida com um índice. O link será preenchido pelo ponteiro ou o ponteiro ainda terá uma referência em algum lugar ????.
Quanto às operações de exclusão, elas praticamente duplicam as operações semelhantes do grupo de adição:
- excluir o nó principal;
- excluir o nó secundário;
- remover um nó do local especificado na lista;
- Destruidor.
1) elas praticamente duplicam as similares (who-what????) do grupo de adição.
2) excluir um nó de um local especificado da lista não é um caso geral de "excluir o nó principal" e "excluir o nó secundário"??? da mesma forma que para adicionar
3)"Com relação às operações de exclusão", e antes disso era "O seguinte pode ser considerado como métodos de adição:" (lá métodos, aqui operações - quero o mesmo formato).
Essa é, portanto, uma opinião pessoal sobre a parte introdutória de uma pessoa ignorante, para quem essas partes introdutórias do artigo foram criadas.
Eu gostei. Obrigado. É bom quando, depois de ler, você tem ideias que podem ser aplicadas em seu próprio lugar. )
tol64, obrigado pela opinião de um especialista com autoridade :-)
Não me considero um especialista e também não me considero uma autoridade. E não é por modéstia, é mesmo. ))) Há programadores aqui que são muitas vezes mais experientes em programação, matemática e negociação. E eu ainda tenho que nadar e nadar. )))
Acho que a autoridade é algo subjetivo. É como o reconhecimento da soberania de um país por outro país....
Citação:
A autoridade consiste no reconhecimento do sujeito (portador) de realizações excepcionais, conhecimentos, habilidades, capacidades, sua posição especial na sociedade...
Portanto, a sua é reconhecida por mim :-)
tol64, estamos aguardando seus novos artigos.
- ru.wikipedia.org
Aqui está um código desse tipo para um exemplo de acesso aos elementos do conjunto de dados:
Onde você encontrou acesso binário aos elementos da CList com complexidade log2(N)?
CList é uma lista, e o acesso binário com complexidade log2(N) requer um salto momentâneo para um nó com índice CurrentIndex +/- (CurrentIndex/2), em que CurrentIndex é o nó atual na lista.
A implementação do CList usa o QuickSearch() padrão, que, no caso da classificação, de fato procura um item referindo-se ao nó CurrentIndex +/- (CurrentIndex/2). Entretanto, esse nó em si é pesquisado pela função GetNodeAtIndex(), e não há milagres nela. Toda a complexidade da operação de acesso recai sobre ela, especificamente sobre essas cadeias de caracteres:
if(revers) { //--- pesquisa da direita para a esquerda for(;i>index;i--) { result=result.Prev(); if(result==NULL) return(NULL); } } else { //--- pesquisa da esquerda para a direita for(;i<index;i++) { result=result.Next(); if(result==NULL) return(NULL); } }
Observando-as, fica claro que a complexidade da pesquisa de um elemento é O(N/2) no limite, porque a lista é bidirecional, portanto, o acesso a um elemento de uma das extremidades não excederá N/2 transições. Seria bom que o autor entendesse melhor o algoritmo antes de escrever um artigo sobre ele.
Com base em minha própria experiência, posso dizer que, como o trabalho com dados está quase sempre relacionado à pesquisa e à classificação deles, é quase sempre ineficiente usar a CList clássica para tarefas reais. A lista é forte, antes de tudo, em coleções combinadas, em que o acesso por índice é combinado com o acesso por lista.
Por alguma razão, poucas pessoas pensam no fato de que uma transição de ponteiro é muito, muito mais lenta do que o endereçamento direto por índice. Passar por result.Next() mil vezes é muito mais lento do que passar pelo índice mil vezes em for.
Um coma.
Começando pelas imagens. O ponteiro vai para o nó, não para os dados, os dados são apenas uma parte do nó, ou seja, há um conflito com a implementação e uma possível confusão.
O texto é, em sua maior parte, normal, para ser justo.
Sobre a implementação. Essas coisas são implementadas por modelos. A variante ideal de representação de contêineres na STL, embora aqui com iteradores e funtores, é uma falha, embora você provavelmente possa pensar em algo.
Como resultado, seus métodos virtuais vazios parecem não apenas incompreensíveis, mas também muito vryviglaz. A classificação de folha ) foi entregue. A implementação e até mesmo a declaração de alguns métodos são questionáveis e até mesmo desconcertantes.
Encapsulamento zero.
Revelações sobre complexidade e pesquisa binária(!) na lista(! gg) terminaram.
Como resultado, temos uma porcaria atual, incompreensível e inconveniente, que não pode ser usada nem mesmo como exemplo de aprendizado (na minha opinião).
Sem ofensa, se você quiser se tornar um programador, aprenda a programar NORMALMENTE. Você será capaz de implementá-la muito melhor.
Olhando para eles, fica imediatamente claro que a complexidade de encontrar um elemento está no limite O(N/2), porque a lista é bidirecional, portanto, acessar um elemento de uma extremidade não excederá N/2 transições. O autor faria bem em entender o algoritmo mais detalhadamente antes de escrever um artigo sobre ele.
Também seria bom refrescar sua memória, pois o que é O, escrito acima, foi primeiramente calculado incorretamente e, em segundo lugar, escrito incorretamente.
_____________________________________
O mais interessante é que esse está longe de ser o pior artigo sobre recursos.
...
Sem ofensa) se você quiser ser um programador, aprenda a programar NORMALMENTE. Você será capaz de perceber isso muito melhor.
Também seria bom refrescar sua memória, pois o que está escrito acima é, em primeiro lugar, calculado incorretamente e, em segundo lugar, escrito incorretamente.
...
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Fundamentos básicos da Programação MQL5: Lista foi publicado:
A nova versão da linguagem MQL proporcionou aos desenvolvedores de sistemas automatizados de negociação ferramentas eficazes para a implementação de tarefas complexas. Não se pode negar o fato de que as funcionalidades de programação da linguagem foram ampliadas consideravelmente. As características de POO em MQL5 por si só já valem muito. Além disso, não se deve deixar de mencionar a Biblioteca Padrão. A julgar pelo código de erro de número 359, os templates de classe serão suportados em breve.
Neste artigo, eu gostaria de conduzir algo que pode de alguma forma ser uma expansão ou continuação dos temas que descrevem os tipos de dados e seus conjuntos. Aqui, eu gostaria de fazer referência a um artigo publicado no site da Comunidade MQL5. Uma descrição muito detalhada dos princípios e da lógica de como trabalhar com arrays foi fornecido por Dmitry Fedoseev (Integer) em seu artigo "Fundamentos básicos da programação MQL5: Arrays".
Assim, hoje me proponho em recorrer as listas, e, mais precisamente, nas listas lineares encadeadas ou ligadas. Vamos começar com a estrutura da lista, seu significado e sua lógica. Depois disso, vamos estudar as ferramentas relacionadas que já estão disponíveis na Biblioteca Padrão. Em suma, eu vou fornecer exemplos de como as listas podem ser utilizados quando se trabalha com MQL5.
Autor: Dennis Kirichenko