Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eMineiro

Listas

Recommended Posts

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

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

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

#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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.