Skip to content

Instantly share code, notes, and snippets.

@jeanbenitez
Created March 16, 2017 03:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeanbenitez/dd92b15a152e008ed27c4f2ee74e080e to your computer and use it in GitHub Desktop.
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.
#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