Ir para conteúdo
Fórum Script Brasil
  • 0

LIsta duplamente encadeada com operador[]


Septimus C

Pergunta

8 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde!

O que você diz é que criou a estrutura de dados e as funções para manipulá-las e quer saber se pode acessar os dados diretamente, correto?

Como o conceito da TAD é a abstração e independência do seu código da implementação, o uso do array diretamente quebra esse paradigma...

Veja que quebra o conceito da TAD, não o conceito da Lista!

Talvez possam haver opiniões diferentes mas este é o meu ponto de vista. :)

Abraços,

Marcelo Utikawa da Fonseca

Link para o comentário
Compartilhar em outros sites

  • 0

Sim quebraria, pois uma lista duplamente encadeada não pode ser acessada como um array.

Veja um exemplo da estrutura de uma lista encadeada:

typedef struct _Lista

{

int elemento;

struct _Lista *prev;

struct _Lista *next;

} Lista;

[code]

Como pode ser observado uma lista encadeada é dinamica, ou seja, pode ser adicionar infinitos elementos, diferente de um vetor que possui um tamanho fixo.

O acesso a um elemento é feito assim:

[code]

int getnum(int p, Lista *ls)

{

Lista *tmp

while(p >= 0)

{

Link para o comentário
Compartilhar em outros sites

  • 0

Sim quebraria, pois uma lista duplamente encadeada não pode ser acessada como um array.

Veja um exemplo da estrutura de uma lista encadeada:

typedef struct _Lista

{

int elemento;

struct _Lista *prev;

struct _Lista *next;

} Lista;

[code]

Como pode ser observado uma lista encadeada é dinamica, ou seja, pode ser adicionar infinitos elementos, diferente de um vetor que possui um tamanho fixo.

O acesso a um elemento é feito assim:

[code]

int getnum(int p, Lista *ls)

{

Lista *tmp

while(p >= 0)

{

Link para o comentário
Compartilhar em outros sites

  • 0

Sim quebraria, pois uma lista duplamente encadeada não pode ser acessada como um array.

Veja um exemplo da estrutura de uma lista encadeada:

typedef struct _Lista
{
      int elemento;
      struct _Lista *prev;
      struct _Lista *next;
} Lista;
Como pode ser observado uma lista encadeada é dinamica, ou seja, pode ser adicionar infinitos elementos, diferente de um vetor que possui um tamanho fixo. O acesso a um elemento é feito assim:
int getnum(int p, Lista *ls)
{
    Lista *tmp
    tmp = ls;
    while(p >= 0)
    {
         if(tmp->next != NULL)
             tmp = tmp->next;
        p--;
    }
        return tmp->elemento;
}

Editado por Mateus GP
Link para o comentário
Compartilhar em outros sites

  • 0

Não foi isso, ocorreu um erro no meu navegador, então cliquei uma vez não enviou, duas tambem não (segundo meu navegador)... Depois quando atualizei já estava este monte de dump, mas da para notar que todas foram eviadas praticamente no mesmo momento.

Mudando um pouco de foco, sou novo no forum e queria saber se quando ocorre isso há algum modo de desfazer o erro.

Editado por Mateus GP
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...