Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <limits.h>
- typedef struct nodo{
- int valor;
- struct nodo* ptrSig;
- }TNodo;
- int lista_vacia(TNodo *);
- void inserta_inicio(TNodo **, int);
- void imprime_lista(TNodo *);
- void libera_lista(TNodo *);
- void Selection_Sort(TNodo *);
- void inserta_inicio(TNodo **ptrListaSE, int valor){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->valor = valor;
- ptrNuevo->ptrSig = *ptrListaSE;
- *ptrListaSE = ptrNuevo;
- }
- int lista_vacia(TNodo * ptrListaSE){
- return ptrListaSE==NULL;
- }
- void imprime_lista(TNodo * ptrListaSE){
- while (ptrListaSE != NULL){
- /*printf(" %d ", (*ptrListaSE).valor);*/
- printf(" %d ", ptrListaSE->valor);
- ptrListaSE = ptrListaSE->ptrSig;
- }
- printf("NULL\n");
- }
- void libera_lista(TNodo * ptrListaSE){
- TNodo * ptrEliminar;
- while (ptrListaSE != NULL){
- ptrEliminar = ptrListaSE;
- ptrListaSE = ptrListaSE->ptrSig;
- free(ptrEliminar);
- }
- }
- /* function to swap data of two nodes a and b*/
- void swap(TNodo *a, TNodo *b)
- {
- int temp = a->valor;
- a->valor = b->valor;
- b->valor = temp;
- }
- void Selection_Sort(TNodo* ptrListaSE){
- int min;
- TNodo* ptrAnterior;TNodo* ptrRecorrido;
- TNodo* ptrMin;
- ptrAnterior=ptrListaSE;
- ptrRecorrido=ptrListaSE;
- if (ptrAnterior== NULL) printf("Empty Linked List");
- while (ptrAnterior!=NULL){
- ptrMin=NULL;
- ptrRecorrido=ptrAnterior;
- min=INT_MAX;
- while(ptrRecorrido!=NULL){
- if(ptrRecorrido->valor < min){
- min=ptrRecorrido->valor;
- ptrMin=ptrRecorrido;
- }
- ptrRecorrido=ptrRecorrido->ptrSig;
- }
- if (ptrMin!=NULL) swap(ptrAnterior,ptrMin);
- ptrAnterior=ptrAnterior->ptrSig;
- }
- }
- int main(int argc, char** argv) {
- TNodo * ptrListaSE = NULL;
- TNodo * ptrUltimo = NULL;
- inserta_inicio(&ptrListaSE, 19);
- inserta_inicio(&ptrListaSE, 15);
- inserta_inicio(&ptrListaSE, 17);
- inserta_inicio(&ptrListaSE, 37);
- inserta_inicio(&ptrListaSE, 3);
- inserta_inicio(&ptrListaSE, 1);
- inserta_inicio(&ptrListaSE, 20);
- Selection_Sort(ptrListaSE);
- imprime_lista(ptrListaSE);
- libera_lista(ptrListaSE);
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement