Jump to content
PlayMa256

Listas duplamente encadeadas

Recommended Posts

PlayMa256

Bom, nos foi passada pelo professor o codigo, para realizar a correção dos erros que possui, dentre eles muitos.

Estava a corrigir algumas coisas, me deparei com isto:

int Obter_Tamanho_LS(Tdescritorno_ls d, int *tam)
{
Tdescritorno_ls percorre;
tam = 0;
if((d.prim) != NULL)
{
//exatamente aqui o problema
   percorre = d.prim;
while (d.prim != NULL)
{
	 tam++;
	 d.prim = d.prim;
}
 }
else
{
	 tam = 0;
}
}

havia lido pela internet, que quando não se é declarado na funcao, como requisito um ponteiro, entao se utiliza o ponto pra chamar o membro da struct, nao o ->.

Bom, foi o que fiz, mas ele diz que

error: incompatible types when assigning to type 'Tdescritorno_ls' from type 'struct no_ls *'

O percorrer estava declarado como um ponteiro, como o Tdescritorno_ls nao está como ponteiro, passei o percorrer pra tipo Tdescritorno_ls mesmo.

Qual o problema disso?

mais pra frente me deparei com um problema semelhante, tenho a funcao int Obter_Tamanho_LS(Tdescritorno_ls d, int *tam)

a mesma está sendo usada dentro de uma outra funcao, a qual requer alguns outros paramentros, entao estou a chama-la desta maneira:

Obter_Tamanho_LS(d->prim, d->tam);

a mesma pede uma struct, entao estou passando isto a ele, só que um erro parecido me é expresso:

error: incompatible type for argument 1 of 'Obter_Tamanho_LS'|

Na funcao em si, int Obter_Tamanho_LS(Tdescritorno_ls d, int *tam), está dando o erro note: expected 'Tdescritorno_ls' but argument is of type 'struct no_ls *'|. OBS: isto é no cabeçalho da função, nao esta sendo invocada.

Posso estar me confundindo com algumas coisas, entao peço ajuda para poder entender melhor esse conceito.

Obrigado.

Edited by PlayMa256

Share this post


Link to post
Share on other sites
HappyHippyHippo

error: incompatible types when assigning to type 'Tdescritorno_ls' from type 'struct no_ls *'

o problema do typedef ...

Tdescritorno_ls é na realidade um ponteiro : struct no_ls *

logo será sempre usado o "->"

desculpa .. li mal o post ... isso está uma confusão

sem a definição da estrutura usada (Tdescritorno_ls) só posso presumir o seguinte:

o membro prim do Tdescritorno_ls é um ponteiro, e daí vem o teu problema

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
PlayMa256

entao, fiz a troca no percorre = d.prim pra percorre = d->prim e ele aparece:

error: invalid type argument of '->' (have 'Tdescritorno_ls')|

Esqueçi da descricao mesmo.

typedef struct no_ls {
   int dado;
   struct no_ls *prox;
}  Tno_ls;
typedef struct descritor_ls {
    int tam;
    struct no_ls *prim;
   struct no_ls *ult;
} Tdescritorno_ls;

Edited by PlayMa256

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.