Ir ao conteúdo
  • Cadastre-se

Lista encadeada


gregmachado

Posts recomendados

Olá estou criando uma lista encadeada, onde o nodo possui 4 informações, char cidade, char estado, um ponteiro para encadear o próximo nodo, e outro ponteiro para outra struct. Estou com problemas na hora de inserir. O primeiro nodo ele faz, porém quando já tem um inserido da problema quando vai inserir outro.

void inserir_cidade(NODO **grafo,char cidade[], char estado[])
{
NODO *novo,*aux;
novo=(NODO*)malloc(sizeof(NODO));
if(novo==NULL){
printf("\nErro!");
}else{
strcpy(novo->cidade,cidade);
strcpy(novo->estado,estado);
novo->prox=NULL;
novo->via=NULL;
if(*grafo==NULL){
*grafo=novo;
}else{
aux=*grafo;
while(aux->prox!=NULL){
aux=aux->prox;
}
aux->prox=novo;
}//else
}//else
}

Link para o comentário
Compartilhar em outros sites

Resolvi o problema, porém, quando vou imprimir, o primeiro sai com lixo. Estou enviando o código todo.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

struct rota{
char destino[30];
char rodovia[30];
float distancia;
struct rota *prox;
};

struct nodo{
char cidade[30];
char estado[5];
struct nodo *prox;
struct rota *via;
};

typedef struct rota ROTA;
typedef struct nodo NODO;

void criar_grafo(NODO **grafo);
void inserir_cidade(NODO **grafo, char cidade[], char estado[]);
void listar_cidades(NODO *grafo);

int main()
{
NODO *grafo;
short int op;
float distancia;
char destino[30],rodovia[30],cidade[30],estado[5];
criar_grafo(&grafo);
while(op!=7){
printf("\n*------------------------- *\n");
printf("\n| 1- Inserir cidade |\n");
printf("\n| 2- Inserir rota |\n");
printf("\n| 3- Calcular distancia |\n");
printf("\n| 4- Listar cidades |\n");
printf("\n| 5- Excluir rota |\n");
printf("\n| 6- Excluir cidade |\n");
printf("\n| 7- Sair |\n");
printf("\n*------------------------- *\n");
printf("\n Informe a Opcao Desejada: ");
scanf("%d",&op);
system("cls");
while((op<1)||(op>7)){
printf("\nOpcao Invalida! Informe a Opcao Desejada:");
scanf("%d",&op);
}
switch (op)
{
case 1:
printf("Cidade: ");
fflush(stdin);
gets(cidade);
strupr(cidade);
printf("Estado: ");
fflush(stdin);
gets(estado);
strupr(estado);
inserir_cidade(&grafo,cidade,estado);
break;
case 4:
listar_cidades(&*grafo);
break;
}//switch
}//while

}

void criar_grafo(NODO **grafo)
{
*grafo=NULL;
}

void inserir_cidade(NODO **grafo, char cidade[], char estado[])
{
NODO *novo,*aux;
novo=(NODO*)malloc(sizeof(NODO));
if(novo==NULL){
printf("\nErro!");
}else{
strcpy(novo->cidade,cidade);
strcpy(novo->estado,estado);
novo->prox=NULL;
novo->via=NULL;
if(*grafo==NULL){
*grafo=novo;
}else{
aux=*grafo;
while(aux->prox!=NULL){
aux=aux->prox;
}
aux->prox=novo;
}//else
}//else
}

void listar_cidades(NODO *grafo)
{
NODO *aux;
aux=grafo;
if(grafo==NULL){
printf("Lista Vazia");
}else{
while(aux!=NULL){
printf("%s - %s \n",aux->cidade,aux->estado);
aux=aux->prox;
}
}//else
getch();
}

Link para o comentário
Compartilhar em outros sites

Greg,

Resolvi o problema, porém, quando vou imprimir, o primeiro sai com lixo. Estou enviando o código todo.

Eu acabei de testar o seu programa e aqui não tive problemas. Está imprimindo normalmente.

Talvez você pudesse fornecer a entrada de dados que está causando problemas para que eu tente reproduzir o problema por aqui.

[]'s

LNW

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!