Im try order my Linked List по выбору сортировки, но у меня есть проблема с заменой между указателем наследующим и следующим (proximo), моя функция ordena dont work. Как я это делаю?Выбор Сортировка со связанным списком C
#include <stdio.h>
#include <stdlib.h>
struct Candidato{
int nota;
char nome[200];
char cpf[11];
struct Candidato *proximo;
};
struct TipoListaCandidato{
Candidato *inicio = NULL;
Candidato *fim = NULL;
};
void iniciaCandidato(TipoListaCandidato *pLista){
pLista->inicio = NULL;
pLista->fim = NULL;
}
TipoListaCandidato lista;
void inserirCandidato(TipoListaCandidato *pLista){
int nota;
char nome[200],cpf[11];
Candidato *aux = pLista->inicio;
Candidato *novoNodo = new Candidato;
printf("Digite nome: ");
fflush(stdin);
gets(nome);
printf("Digite cpf: ");
fflush(stdin);
gets(cpf);
printf("Digite nota: ");
scanf("%d",&novoNodo->nota);
strcpy(novoNodo->cpf,cpf);
strcpy(novoNodo->nome,nome);
novoNodo->proximo = NULL;
if(aux == NULL){
pLista->inicio = novoNodo;
pLista->fim = novoNodo;
}else{
aux = pLista->fim;
pLista->fim = novoNodo;
aux->proximo = pLista->fim;
}
}
TipoListaCandidato ordenado;
void ordena(TipoListaCandidato *pLista){
Candidato *aux = pLista->inicio,*seguinte,*tmp;
for(;aux != NULL;aux = aux->proximo){
Candidato *minimo = aux;
for(seguinte = aux->proximo;seguinte !=NULL; seguinte = seguinte->proximo){
if(seguinte->nota > minimo->nota){
minimo = seguinte;
}
}
tmp = aux;
aux = minimo;
minimo = tmp;
//tmp->proximo = aux->proximo;
//minimo->proximo = tmp;
}
}
Я бы хотел, чтобы я сделал обмен между указателями, помогите мне PLS.
Att
Если это должно быть C, вам не хватает некоторых деклараций. Что такое тип 'TipoListaCandidato', например? В C наличие структуры с этим * тегом * автоматически не дает вам тип с этим * именем *. –
Это выглядит подозрительно: 'if (seguinte-> nota> minimo-> nota) {minimo = seguinte; } '. Мой испанский (португальский?) Не очень хорош, но если «minimo» должен заканчиваться как указатель на наименьший элемент в текущем подсписке, то у вас есть сравнение назад, –