Organizar lista encadeada em ordem alfabética usando TAD e ponteiros.
Pessoal, eu tenho que criar uma lista encadeada que permita inserir e remover dados organizando-os em ordem alfabética( de acordo com o nome inserido). Consigo fazer isso em código comum, mas usando listas fica muito difícil. Estou tendo muita dificuldade. Envio o código, mas não compila, está cheio de falhas que eu não faço ideia de como solucionar. Obrigado.
Este é o código onde desenvolvo as listas e as estruturas
#include<stdilib.h>
#include<stdio.h>
#include<string.h>
//nodo principal do código
struct nodo{
int matricula;
char nome[40];
float nota;
struct nodo *prox;
};//ponteiro para o nodo. Inicio da lista
struct nodo *inicio;//variavel global, acessavel por todos
//função de inserção de dados
//data= dados, n=posição
void insert(int matricula, char nome[40], float nota){
//variavel auxiliar.
struct nodo *temp;
//conferir alocação de memoria com a criação de um nodo
//criar um ponteiro para o nodo
struct nodo* novo = (struct nodo*)malloc(sizeof(struct nodo*));
if(novo==NULL){
printf("sem memoria!");
}
//se read estiver fazia,enfia o valor em inicio.
if inicio(==NULL){
novo->matricula= data;// preenche com o valor
//FALTA PREENCHER O RESTO
novo->prox = NULL;//a proxima posição aponta para null.
inicio = novo;//inicio aponta para a 1º posição
}else{
//se o inicio não estiver vazio, preenche o nodo
novo->matricula;
novo->nome;
novo->nota;
while(strcmp(temp->data,novo->data)>0){//substituir data aqui
temp= temp->prox;//variavel temporaria aponta para o proximo.
temp->prox = novo;//depois aponta para novo.
}
}
}
void Mostrar(){
struct nodo *aux = inicio;
printf("INICIO: %p\n", inicio);
while (aux != NULL) {
printf("%p|%.2f|%s|%d\n", aux, aux->nota,aux->nome,aux->matricula);
aux = aux->prox;
}
printf("\n");
}
int Retirar(){
struct nodo *aux, *auxOld;
if (inicio == NULL)
return 0;
/// Percorrer a lista ate o fim
aux = inicio;
auxOld = NULL;
while (aux->prox != NULL) {
auxOld = aux;
aux = aux->prox;
}
free(aux);
auxOld->prox = NULL;
return 1;
}Discussão (0)
Carregando comentários...