Я пытаюсь упорядочить свой связанный список по сортировке выбором, но у меня проблема с переключением между указателем atual и next (proximo), моя функция ordena не работает. Как я это делаю?
#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;
}
}
Я хотел бы, как я могу поменять местами указатели, помогите мне, пожалуйста.
Атт
TipoListaCandidato
, например? В C наличие структуры с этим тегом автоматически не дает вам тип с этим именем. - person John Bollinger   schedule 19.11.2015if(seguinte->nota > minimo->nota){ minimo = seguinte; }
. Мой испанский (португальский?) не так хорош, но еслиminimo
должен быть указателем на наименьший элемент в текущем подсписке, тогда у вас есть сравнение в обратном порядке, - person John Bollinger   schedule 19.11.2015