Pajé Postado Setembro 26, 2010 Denunciar Share Postado Setembro 26, 2010 Bom dia pessoal,Estou tendo uma grande dificuldade de fazer um trabalho com lista encadeada com header.Com um elemento na struct eu faço tranquilo, porém preciso ter 4 q são codigo, nome do aluno, nota g1 e nota g2.A duvida é...após declarar as 4 variaveis na struct(no inicio do programa)....preciso relacionar os seus nomes lá no main e na função void?Selecionei em negrito onde acho q estou errando.Por favor, me ajudem....muito obrigado.Olhem o código q estou fazendo:#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>struct nodo { int codigo; char aluno[50]; int g1; int g2; struct nodo *proximo;};struct header { struct nodo *inicio; int qtde; struct nodo *fim;};void cria_header (struct header **lista, int *status){ struct header *l = NULL; l = (struct header *) malloc(sizeof(struct header)); if (l == NULL) *status = 0; else { l->inicio = NULL; l->qtde = 0; l->fim = NULL; *status = 1; } *lista = l;}void insere_esquerda (struct header *lista, int valor, int *status){ struct nodo *p; int dados; p=(struct nodo *) malloc(sizeof(struct nodo)); if (p==NULL) *status=0; else { p->dados= valor; p->proximo=lista->inicio; (lista->qtde)++; *status=1; if (lista -> fim == NULL) lista -> fim = p; }}void lista_tudo (struct nodo **inicio) { struct nodo *aux; aux=*inicio; if (aux!=NULL) { printf ("\n============================\n\n"); printf ("dados %d\n",aux->codigo); while (aux->proximo!=NULL) { aux=aux->proximo; printf ("dados %d\n",aux->codigo); } }}main (){ struct header *lista; nodo *inicio,*dados,*fim; int opcao,cod,status; cria_header(&lista,&status); do{ printf("\n Menu \n"); printf("\n 1 - Inserir cadastro"); printf("\n 2 - Altera cadastro"); printf("\n 3 - Apaga Cadastro"); printf("\n 4 - Lista alunos por codigo"); printf("\n 5 - Lista todos alunos"); printf("\n 6 - Sair"); printf("\n Digite a opcao desejada : "); scanf("\n %d",&opcao); switch(opcao){ case 1:// printf("\n\n Digite o codigo do aluno: ");// scanf("%d",&codigo);// printf("\n Digite o nome do aluno: ");// scanf("%c",&aluno);// printf("\n Digite a nota G1 do aluno: ");// scanf("%d",&g1);// printf("\n Digite a nota G2 do aluno: ");// scanf("%d",&g2); insere_esquerda(lista,valor,&status); lista_tudo(&inicio); break; case 2:// altera_aluno(&lista); break; case 3:// apaga_aluno(&lista); break; case 4:// lista_codigo(&lista); break; case 5: lista_tudo(&inicio); break; } }while(opcao!=6);} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Setembro 27, 2010 Denunciar Share Postado Setembro 27, 2010 Como assim relacionar nomes? Se refere aos valores dos campos?O que você precisa fazer é apenas ligar um nó ao próximo elemento (usando variável nodo*), os outros campos (código, nome, notas) não fazem diferença nessa parte. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pajé Postado Outubro 5, 2010 Autor Denunciar Share Postado Outubro 5, 2010 Entendi.Muito Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Outubro 6, 2010 Denunciar Share Postado Outubro 6, 2010 De nada, qualquer coisa é só postar.Obs.:O tópico foi marcado como Resolvido. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Pajé
Bom dia pessoal,
Estou tendo uma grande dificuldade de fazer um trabalho com lista encadeada com header.
Com um elemento na struct eu faço tranquilo, porém preciso ter 4 q são codigo, nome do aluno, nota g1 e nota g2.
A duvida é...após declarar as 4 variaveis na struct(no inicio do programa)....preciso relacionar os seus nomes lá no main e na função void?
Selecionei em negrito onde acho q estou errando.
Por favor, me ajudem....muito obrigado.
Olhem o código q estou fazendo:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct nodo {
int codigo;
char aluno[50];
int g1;
int g2;
struct nodo *proximo;
};
struct header {
struct nodo *inicio;
int qtde;
struct nodo *fim;
};
void cria_header (struct header **lista, int *status)
{
struct header *l = NULL;
l = (struct header *) malloc(sizeof(struct header));
if (l == NULL)
*status = 0;
else {
l->inicio = NULL;
l->qtde = 0;
l->fim = NULL;
*status = 1;
}
*lista = l;
}
void insere_esquerda (struct header *lista, int valor, int *status){
struct nodo *p;
int dados;
p=(struct nodo *) malloc(sizeof(struct nodo));
if (p==NULL)
*status=0;
else {
p->dados= valor;
p->proximo=lista->inicio;
(lista->qtde)++;
*status=1;
if (lista -> fim == NULL)
lista -> fim = p;
}
}
void lista_tudo (struct nodo **inicio) {
struct nodo *aux;
aux=*inicio;
if (aux!=NULL) {
printf ("\n============================\n\n");
printf ("dados %d\n",aux->codigo);
while (aux->proximo!=NULL) {
aux=aux->proximo;
printf ("dados %d\n",aux->codigo);
}
}
}
main (){
struct header *lista;
nodo *inicio,*dados,*fim;
int opcao,cod,status;
cria_header(&lista,&status);
do{
printf("\n Menu \n");
printf("\n 1 - Inserir cadastro");
printf("\n 2 - Altera cadastro");
printf("\n 3 - Apaga Cadastro");
printf("\n 4 - Lista alunos por codigo");
printf("\n 5 - Lista todos alunos");
printf("\n 6 - Sair");
printf("\n Digite a opcao desejada : ");
scanf("\n %d",&opcao);
switch(opcao){
case 1:
// printf("\n\n Digite o codigo do aluno: ");
// scanf("%d",&codigo);
// printf("\n Digite o nome do aluno: ");
// scanf("%c",&aluno);
// printf("\n Digite a nota G1 do aluno: ");
// scanf("%d",&g1);
// printf("\n Digite a nota G2 do aluno: ");
// scanf("%d",&g2);
insere_esquerda(lista,valor,&status); lista_tudo(&inicio);
break;
case 2:
// altera_aluno(&lista);
break;
case 3:
// apaga_aluno(&lista);
break;
case 4:
// lista_codigo(&lista);
break;
case 5:
lista_tudo(&inicio);
break;
}
}while(opcao!=6);
}
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.