Created
March 16, 2017 03:33
-
-
Save jeanbenitez/dd92b15a152e008ed27c4f2ee74e080e to your computer and use it in GitHub Desktop.
Lista Simple: Pequeño algoritmo para insertar una cantidad n de nodos, y luego ordenarla.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> // Esta libreria tiene funciones de entrada y salida printf y scanf | |
#include <stdlib.h> // Esta tiene los metodos de malloc y varios mas | |
#include <conio.h> // De esta libreria solo usamos el getch() del final | |
// Se define el tipo de dato de cada nodo de las listas | |
// Esto solo define un molde o maqueta, no un nodo | |
struct lista{ | |
int dato; | |
struct lista * sig; | |
}; | |
// Aqui se define un apuntador, que siempre apuntará a la cabeza | |
struct lista * ptr; | |
int main(){ | |
int n, tmp; | |
struct lista *p, *r, *q; //Definimos apuntadores a medida que los necesitemos | |
printf("Cuantos nodos quiere crear?: "); | |
scanf("%d", &n); | |
p = ptr; //p apunta a ptr | |
for(int i=0;i<n;i++){ | |
// Inserción por cabeza | |
r = (struct lista *)malloc(sizeof(struct lista)); | |
printf("Dato del nodo %d: ", i+1); | |
scanf("%d", &tmp); | |
r->dato = tmp; | |
if(ptr==NULL){ | |
ptr = r; | |
r->sig = NULL; | |
}else{ | |
r->sig = ptr; | |
ptr = r; | |
} | |
} | |
// Vamos a recorrerlo | |
r = ptr; | |
while(r!=NULL){ | |
printf("[%d]->", r->dato); | |
r = r->sig; | |
} | |
printf("\n\nCorremos un algoritmo para ordenarlo:\n\n"); | |
// Algoritmo para ordenar la lista simple | |
r = ptr; | |
while(r!=NULL){ | |
q = r->sig; | |
while(q!=NULL){ | |
if(r->dato > q->dato){ | |
tmp = r->dato; | |
r->dato = q->dato; | |
q->dato = tmp; | |
} | |
q=q->sig; | |
} | |
r = r->sig; | |
} | |
// Vamos a recorrerlo de nuevo | |
r = ptr; | |
while(r!=NULL){ | |
printf("[%d]->", r->dato); | |
r = r->sig; | |
} | |
getch(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment