Estou fazendo uma lista encadeada, mas toh com o seguinte problema quando faço o inserir dentro da minha função main ele roda normal e parece que a inserção vai rolar sem problemas, mas quando faço uma função para fazer isso é como se a o ponteiro lista sempre apontasse pra NULL...o codigo está assim
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct dados{
float chave;
char nome[40];
char telefone[20];
char status[3];
struct dados *prox;
}registro;
void nova_lista(registro *lista);
void inserir(registro *lista);
int lista_vazia(registro *lista);
int testa_chave(float teste);
registro *lista;
int main(void){
int menu;
do{
do{
system("cls");
puts("[1]Inicializa uma nova lista.");
puts("[2]Busca e imprime registro de reserva.");
puts("[3]Insercao de nova reserva.");
puts("[4]Remocao de reserva.");
puts("[5]Listar todas as reservas cadastradas.");
puts("[6]Listar todas as reservas com status em comum.");
puts("[7]Sair.");
scanf("%d",&menu);
switch(menu){
case 1 :
nova_lista(lista);
printf("\nUma nova lista foi criada!\n");
system("pause");
break;
case 2 :
break;
case 3 :
inserir(lista);
break;
case 4 :
break;
case 5 :
break;
case 6 :
break;
case 7 :
return(0);
}
}while(menu<1 || menu>7);
}while(menu>0 && menu<8);
}
void inserir(registro *lista){
if(lista==NULL){
puts("nulo!");
lista=(registro*)malloc(sizeof(registro));
lista->chave=1000;
lista->prox=NULL;
}else{
puts(" não nulo!");
//o problema aqui é que sempre que chama-se a função inserir o valor de lista é NULL
//mesmo depois da primeira alteração, quando faço essa rotina no main isso não acontece...porque?
//será que o problema está na passagem dos parametros
Pergunta
Pirituba
beleza galera, é o seguinte:
Estou fazendo uma lista encadeada, mas toh com o seguinte problema quando faço o inserir dentro da minha função main ele roda normal e parece que a inserção vai rolar sem problemas, mas quando faço uma função para fazer isso é como se a o ponteiro lista sempre apontasse pra NULL...o codigo está assim
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct dados{
float chave;
char nome[40];
char telefone[20];
char status[3];
struct dados *prox;
}registro;
void nova_lista(registro *lista);
void inserir(registro *lista);
int lista_vazia(registro *lista);
int testa_chave(float teste);
registro *lista;
int main(void){
int menu;
do{
do{
system("cls");
puts("[1]Inicializa uma nova lista.");
puts("[2]Busca e imprime registro de reserva.");
puts("[3]Insercao de nova reserva.");
puts("[4]Remocao de reserva.");
puts("[5]Listar todas as reservas cadastradas.");
puts("[6]Listar todas as reservas com status em comum.");
puts("[7]Sair.");
scanf("%d",&menu);
switch(menu){
case 1 :
nova_lista(lista);
printf("\nUma nova lista foi criada!\n");
system("pause");
break;
case 2 :
break;
case 3 :
inserir(lista);
break;
case 4 :
break;
case 5 :
break;
case 6 :
break;
case 7 :
return(0);
}
}while(menu<1 || menu>7);
}while(menu>0 && menu<8);
}
void inserir(registro *lista){
if(lista==NULL){
puts("nulo!");
lista=(registro*)malloc(sizeof(registro));
lista->chave=1000;
lista->prox=NULL;
}else{
puts(" não nulo!");
//o problema aqui é que sempre que chama-se a função inserir o valor de lista é NULL
//mesmo depois da primeira alteração, quando faço essa rotina no main isso não acontece...porque?
//será que o problema está na passagem dos parametros
}
}
void nova_lista(registro *lista){
lista=NULL;
}
int lista_vazia(registro *lista){
if(lista==NULL)return(1);
else return(0);
}
int testa_chave(float teste){
if(teste>0 && teste<1000000)return(1);
else return(0);
}
:D valeu pela força...abraços
Link para o comentário
Compartilhar em outros sites
2 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.