Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema de ordenaciones ayuda!!!!!

Estas en el tema de Problema de ordenaciones ayuda!!!!! en el foro de C/C++ en Foros del Web. Hola a todos, tengo un problema con mi siguiente programa. Me dejaron que a base de un código lasta.c el cual es el que se ...
  #1 (permalink)  
Antiguo 21/10/2009, 01:06
 
Fecha de Ingreso: junio-2009
Mensajes: 3
Antigüedad: 17 años, 3 meses
Puntos: 0
Problema de ordenaciones ayuda!!!!!

Hola a todos, tengo un problema con mi siguiente programa.
Me dejaron que a base de un código lasta.c el cual es el que se encuentra mas abajo, hacer el ordenamiento de burbuja, selección, shell, quick short, búsqueda lineal y búsqueda binaria. No se puede modificar el código porque según así debe ser el ejercicio, solo agregarle lo que me piden. Porfavor ayúdenme.
Código PHP:
#include <stdio.h>
#include <conio.h>
#include <string.h>

struct Nodo_{
   
char* dato;
   
struct Nodo_* ant;
   
struct Nodo_* sig;
};

typedef struct Nodo_ Nodo;

Nodo* creaNodo(char* d){
   
Nodo *nuevo;
   
nuevo= (Nodo*)malloc(sizeof(Nodo));
   
nuevo->dato=(char*)malloc(strlen(d)*sizeof(char));
   
strcpy(nuevo->dato, d);
   
nuevo->sig= nuevo->ant= 0;
   return 
nuevo;
}

int tamanio(Nodo* inicio){
   
int i;
   
Nodo* tmp;
   for(
i= 0, tmp= inicio; tmp; i++, tmp= tmp->sig);
    return 
i;
}

Nodo* iesimo(Nodo* inicio, int i){
   
int j;
    
Nodo* tmp;
    if(
i < 0 || i >= tamanio(inicio))
       return 
0;
    for(
j=0, tmp= inicio; j < i; j++, tmp= tmp->sig);
    return 
tmp;
}

Nodo* agregar(Nodo* inicio, char* d){
   
Nodo* ultimo;
   if(!
inicio)
      return 
creaNodo(d);
   
ultimo= iesimo(inicio, tamanio(inicio) - 1);
   
ultimo->sig= creaNodo(d);
   
ultimo->sig->ant= ultimo;
   return 
inicio;
}
 
Nodo* insertar(Nodo* inicio, char* d, int i){
    
Nodo* tmp;
    
Nodo *nuevo;
    if((!
inicio && i) || i >= tamanio(inicio))
       return 
inicio;
    if(!
inicio || i == tamanio(inicio) - 1)
       return 
agregar(inicio, d);
    if(!
i){
       
tmp= inicio->sig;
        
inicio->sig= creaNodo(d);
        
inicio->sig->sig= tmp;
        
tmp->ant= inicio->sig;
        return 
inicio;
   }
   
tmp= iesimo(inicio, i);
   
nuevo= creaNodo(d);
   
nuevo->sig= tmp->sig;
   
nuevo->sig->ant= nuevo;
   
nuevo->ant= tmp;
   
tmp->sig= nuevo;
   return 
inicio;
}

Nodo* eliminar(Nodo* inicio, int i){
   
Nodo* tmp;
   
Nodo* act;
   if(!
inicio || i >= tamanio(inicio))
      return 
inicio;
   if(!
i){
      
tmp= inicio->sig;
      if(
tmp)
         
tmp->ant= 0;
      
free(inicio);
      return 
tmp;
   }
   
tmp= iesimo(inicio, i - 1);
   
act= tmp->sig;
   
tmp->sig= act->sig;
   if(
tmp->sig)
      
tmp->sig->ant= tmp;
   
free(act);
   return 
inicio;
}

void imprimir(Nodo* inicio, int i, int f){
    
Nodo* tmp;  
    
int j;
    
tmp= iesimo(inicio, i);
   for(
j= i; tmp && j <= f; j++, tmp= tmp->sig)
      
printf("%s\n", tmp->dato);
}


int main(){
   
Nodo *inicio;
   
char cad[80];
   
int i;
   
inicio= 0;
   for(
i= 0; i < 3; i++){
      
printf("Inserta la cadena: ");
      
gets(cad);
      
inicio= agregar(inicio, cad);
      
imprimir(inicio, 0, i + 1);
   }
   
printf("Ahora insertaremos una linea despues de la linea 0: ");
   
gets(cad);
   
inicio= insertar(inicio, cad, tamanio(inicio)-2);
   
printf("La lista es: \n");
   
imprimir(inicio, 0, tamanio(inicio));
   
printf("Ahora borraremos la linea 4\n");
   
inicio= eliminar(inicio, 4);
   
imprimir(inicio, 0, tamanio(inicio));
   
   
getch();
   return 
0;
} 
  #2 (permalink)  
Antiguo 21/10/2009, 14:57
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 17 años, 5 meses
Puntos: 9
Respuesta: Problema de ordenaciones ayuda!!!!!

Te invito a que busques en Google un poco. Por ejemplo:

http://www.conclase.net/c/orden/burbuja.html

Salu2
  #3 (permalink)  
Antiguo 22/10/2009, 01:44
 
Fecha de Ingreso: junio-2009
Mensajes: 3
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Problema de ordenaciones ayuda!!!!!

A gracias pero el problema es que es con apuntadores y no se hacer eso
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:34.