eMineiro 0 Denunciar post Postado Novembro 20, 2007 Pois é galera andei matando umas auls na faculdade e tenho que aprender sobre listas se nao estou fudido , preciso de 1 exemplo de como a lista eh criada ou seja preciso das structs , e de uma função incializa o resto eu me viro .... eh pq nao existem tutoriais sobre listas eu lembro que meu pofessor fazia uma struct com p , u , n , acho uqe P e U era ponteiros que apontavam para o primeiro e ultimo elemento da lista e N era o numeros de elementos. e tinha outro eu acho que era a struct do elemento que era int valor e prox acho que eh isso..... onde prox eh o proximo elemento eh isso mesmo?? no caso as structs ficaria assim?? typedef struct{ int valor talgumacoisa *prox }talgumacoisa typedef struct{ talgumacoisa *u,*p; int n; }talgumascoisa2 arghhh ta f*** .... eu lembro que a primeira era tNo e outra era tLista arghhh ajudem ai e se tiver que da alguma include especial por favor avisa ai!! Ahhh e me expliquem como eu vou fazer a função incializa de uma lista , acho que tem que usar malloc tb aff ta f*** eu nao sei pra que serve essa malloc e nem como usa Compartilhar este post Link para o post Compartilhar em outros sites
eMineiro 0 Denunciar post Postado Novembro 20, 2007 typedef struct No{ int info; struct No*prox; }tNo; typedef struct{ tNo*p; tNo*u; int n; }tlista; void inicializa(tlista*l){ l->n=0; l->p=NULL; l->u=NULL; } Ta ai as structs ,... alguem pode me dar um exemplo de como usar malloc em listas??? usando essas structs Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 20, 2007 A inicialização da lista está correta. Voce precisa usar malloc quando for inserir um elemento na lista. Malloc é uma função que aloca dinamicamente um espaco de memoria e retorna o ponteiro para aquela área reservada. Exemplo de uso: p = (tlista *) malloc(sizeof(tlista)) p -> é um ponteiro para tlista. (tlista *) -> indica que o retorno da função é um ponteiro de tlista. (sizeof(tlista)) -> reserva o espaço que ocupa um tlista. Compartilhar este post Link para o post Compartilhar em outros sites
eMineiro 0 Denunciar post Postado Novembro 20, 2007 #include <stdio.h> #include <stdlib.h> typedef struct No{ int info; struct No*prox; }tNo; typedef struct{ tNo*p; tNo*u; int n; }tlista; void inicializa(tlista*l){ l->n=0; l->p=NULL; l->u=NULL; } int vazia (tlista*l){ return!l->n; } void insere(tlista*l,int elem){ tNo*q; q=(tNo*)malloc(sizeof(tNo)); q->info=elem; q->prox=NULL; if (vazia(l)){ l->p=q; l->u=q; }else{ l->u->prox=q; l->u=q; } l->n++; } main(){ tNo*q; int x; tlista l; inicializa(&l); insere(&l,2); q = l->p; x = q->info; prinft("%d",x); } Ta dndao erro na linha 45 --> 45 D:\Eduardo\Faculdade\Programação II - Varejao\Trabalho II\listas.c invalid type argument of `->' Compartilhar este post Link para o post Compartilhar em outros sites
eMineiro 0 Denunciar post Postado Novembro 20, 2007 malz..alguem sabe o pq do erro na linha 45? Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 21, 2007 Veja a definicão de l: main(){ tNo*q; int x; tlista l; inicializa(&l); insere(&l,2); q = l->p; x = q->info; prinft("%d",x); } l é do tipo tlista e não um ponteiro, por isso -> não é permitido. Voce tem duas opcões, ou use ponteiro em l ou use esse operador: q = l.p; Compartilhar este post Link para o post Compartilhar em outros sites
eMineiro 0 Denunciar post Postado Novembro 21, 2007 se usar tlista *l; como eu faria pra pra incializar e inserir , ainda sim teria que ter o &l ??? ou seria so o l ?? Outra duvida eh que eu achei que q = l.p inseriria o conteudo de p em q , no caso seria *p = l.p neh?? (mas so pra tirar duvida mesmo , pq eu sei uqe se eu fizer isso vai bugar tudo hehehe) Outra coisa se eu usar erroniamente ponteiro, qual o maximo de problemas que pode acontecer no meu computador??...reincializando a maquina resolveria todos eles? Linux melhor que o windows para se fazer teste com ponteiros??? probabilidade de f**** meu pc menor no linux?? Compartilhar este post Link para o post Compartilhar em outros sites