Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde, estou com um problema para compilar esse programa, ele roda e não da nenhum erro porem quando eu alimento ele com algum valor o console trava e fecha sozinho. Deve ser algum erro desconhecido. vou jogar meu código comentado para vocês darem uma olhada.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
//Criando a Estrutura da Lista
struct Tipo_lista {
int cod;
struct Tipo_lista *prox;
};
//Determinando um ponteiro para o primeiro e o ultimo item da lista
struct Tipo_lista *primeiro;
struct Tipo_lista *ultimo;
//Criando a Função de Lista Vazia
void Lista_vazia(){
//faz e estrutura Tipo_lista apontar para aux
struct Tipo_lista *aux;
/* Antes do malloc diz que eu quero alocar uma estrutura do tipo lista e depois (o malloc é o comando para alocar)
e depois do malloc o sizeof "do tamanho de': nesse caso é do tamanho que a estrutura Tipo_lista vai suportar */
aux=(struct Tipo_lista*)malloc(sizeof(struct Tipo_lista));
/* A variavel primeiro passa a valer aux e ultimo passa a valer primeiro */
primeiro=aux;
ultimo=primeiro;
}
void insere (int x){
struct Tipo_lista *aux;
aux=(struct Tipo_lista*)malloc(sizeof(struct Tipo_lista));
// Nessa primeira parte ele pega o valor de ( x ) e joga para ( cod ) - aux recebe o valor porque aponta para ( cod )
aux->cod=x;
// Nessa primeira parte ele pega o valor de ( aux ) e joga para ( prox ) - ultimo recebe o valor porque aponta para ( prox )
ultimo->prox=aux;
// Nessa primeira parte ele diz que ultimo é igual ao ( prox ) que aponta para o ( ultimo )
ultimo=ultimo->prox;
//NULL é a condição de parada apos a inserção do item
aux->prox=NULL;
}
void imprime(){
struct Tipo_lista *aux;
/* Determinamos que aux= primeiro->prox porque na função Lista Vazia um aux já foi criado e nao recebeu nenhum valor
Então o imprime começa a contar o 2 aux da função Inserir ou seja ele conta a 2 posição, por isso aux= primeiro->prox*/
aux=primeiro->prox;
/* Enquanto aux for diferente de NULL e porque nos temos items na lista
por isso en cada looping determinamos que aux = aux->prox assim ele vai escaneando todos items da lista ate chegar em NULL*/
while(aux != NULL){
printf("Item %d",aux->cod);
aux=aux->prox;
}
}
int pesquisa(int x){
struct Tipo_lista *aux;
aux=primeiro->prox;
int flag = 0;
while(aux != NULL){
if(aux->cod==x){
printf("ITEM ENCONTRADO %d", x);
flag = 1;
aux = NULL;
}
else{
aux=aux->prox;
}
if(flag == 0){
printf("ITEM NÃO ENCONTRADO");
}
}
}
int main(int argc, char *argv[]){
char op = '2';
int codigo;
//laço para ir inserindo varios items e armazena-los na memoria
while (op != '0'){
printf("Entre com o Codigo: ");
scanf("%d", &codigo);
//função que insere o item
insere(codigo);
printf("Continuar com o cadastro? 1 = sim 0 = não: ");
op = getch();
}
//função que imprime o item
imprime();
printf("Entre com o item para ser pesquisado: ");
scanf("%d", &codigo);
//função que pesquisa o item
pesquisa(codigo);
getch();
}
Não sei onde estou errando.
Tenho prova Terça. Se alguém puder me ajudar eu agradeço.
Um abraço. :)
Carregando comentários...