• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

tmcp

Lista de listas?!

9 mensagens neste tópico

Boas pessoal! Ando aqui de roda de listas e mais listas mas nao consigo encontrar nada em C de como fazer lista de listas. Se alguem pudesse indicar algum site ou qq coisa que ensina-se a fazer isto agradecia. O que quero fazer é um coisa deste tipo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sabes fazer uma simples lista ligada? Ou seja, tens um nodo, apontar para o próximo e assim sucessivamente até ao fim? Se sabes fazer isto, uma hipótese depois seria criar uma outra estrutura com 2 apontadores, um apontador aponta para o próximo nodo e o segundo apontador aponta para o inicio de uma determinada lista. Assim d euma forma muito básica era isto que eu faria.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ja tenho as estruturas criadas. A tipo_lista_1 tem um apontador para tipo_lista_2 e um apontador para tipo_lista_1 prox. A tipo_ista_2 tem um apontador para prox. Isso ate ai sei fazer. Mas depois as ligaçoes entre listas saiem todas mal!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crias uma lista que possa armazenar listas (ou melhor, que possam armazenar apontadores para qualquer coisa) e está feito. Admitindo que a lista vai ser também um apontador, já podes ter listas de listas (e listas de listas de listas de listas de listas...).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Posta tu o que tens feito para podermos ver como estás a fazer as coisas e o que possivelmente está mal :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
#include <stdio.h>
#include <stdlib.h>

typedef struct tipo2{
int b;
struct apt *prox;
}tipo2;

typedef struct tipo1{
int a;
tipo2 *apt;
struct tipo1 *prox;
}tipo1;




int ntipo1(tipo1 **inicio, tipo1 **fim){

int a;
tipo1 *ap;
ap=(tipo1*)malloc(sizeof(tipo1));

printf("ID:");
scanf("%d",&a);

(ap->a)=a;
(ap->apt)= ( (tipo2*) NULL);
(ap->prox)=NULL;

if(*inicio==(tipo1 *) NULL)
	*inicio=ap;
else
(*fim)->prox = ap; /* Faz a ligacao logica */

*fim = ap; /* Actualiza o ponteiro da fila */

return 1;

}

int ntipo2(tipo2 **init, tipo2 **end,tipo1 *inicio, tipo1 *ap){

int a,b;
tipo2 *apf;

printf("Qual o numero do ID?");
scanf("%d",&a);

for(ap=inicio;ap!=NULL;ap=ap->prox){
	if( (ap->a) == a)
		break;
}

printf("%d",(ap->a));

apf=(tipo2*)malloc(sizeof(tipo2));

printf("\nNum:");
scanf("%d",&b);

(apf->b)=b;

if( (ap->apt)== NULL )
	(ap->apt)=*init;

if(*init==NULL)
	*init=apf;

else
(*end)->prox = apf; /* Faz a ligacao logica */

*end = apf; /* Actualiza o ponteiro da fila */

return 0;

}

int main(void){


tipo1 *inicio;
tipo2 *init;
tipo1 *fim;
tipo2 *end;
tipo1 *ap;
tipo2 *apf;

nforn(&inicio,&fim);
nforn(&inicio,&fim);
nfact(&init,&end,inicio,ap);

for(ap=inicio;ap!=NULL;ap=ap->prox){

		for(apf=init;apf!=NULL;apf=apf->prox)
			printf("Numero do ID=%d, Numero da apt=%d",(ap->a),(apf->b));
}

return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que é o nforn e o nfact?

Suponho que sejam as funções para criar as listas, devias fornecê-las.

De qualquer modo, repara que vais ter várias listas do tipo 2, de modo que não faz muito sentido teres apontadores explícitos para o seu início e fim.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas ter apontadores especificos para o fim e inicio esta relacionado com as listas tipo2?! podias fornecer algum exepmlo para ter uma nocao de como fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora