Jump to content

Ayuda con métodos de búsqueda (listas simples, dobles, etc..


Recommended Posts

Hola, bueno estoy tratando de programar metodos de busqueda. Me gustaría saber si alguno de Ud. tiene algun código sobre los siguientes temas:

 

-listas simples

-listas dobles circulares

-tad´s

-arboles binarios

-colas

-starcks

 

Ojala puedas ayudarme. De todas maneras de ante mano muchas gracias!!! :aplauso:

Espero sus respuestas!

Link to comment
Share on other sites

¿Ayuda? no entiendo que clase de ayuda quieres si no dices nada.

 

que si me puedes dejar algún código que sirva de ejemplo, algo que sirva para compilarlo y ver como funciona...

 

saludos!

Eso sería hacerte la tarea :tonto: . Almenos esfuerzate por hacer un método y si no funciona como tu quieres puedes lanzar el código y ahí entramos ayudarte. Aparte nisiquiera especificas un lenguaje, mediante lo que estes haciendo, son cosas muy diferentes, ya que hay clases que vienen con los metodos listos para "buscar"

Link to comment
Share on other sites

ras_chalo, para que veas que algunos si ayudamos aquí tienes el método burbuja para ordenamiento.

 

 

codigo SEGMENT PARA PUBLIC 'CODE'    ; Abre el segmento de código
  ASSUME CS:codigo, DS:codigo, ES:codigo, SS:codigo
  ORG 100h                              ; COM -> comienza en 100h
  __LonColumn  EQU 8                    ; Longitud de elementos
  Eletos       EQU 20                ; Elementos de la matriz
  IF1                                ; En la primera pasada del ensamblado
    INCLUDE ..\LIB\Sort_M.INC        ; recogemos las macros
  ENDIF
  Entrada PROC                          ; Abre el procedimiento
  ; Mostramos por pantalla la matriz inicial
    MOV       DX, OFFSET Matriz
    MOV       AH, 9
    INT       21h
  ; Comenzamos el bucle principal
    $_Burbuja:
      XOR       DX, DX                  ; Suponemos todo en orden
      MOV       SI, OFFSET Matriz    ; Puntero al primer nombre
      MOV       DI, OFFSET Matriz+__LonColumn; Puntero al segundo nombre
      MOV       CX, Eletos-1
      $_Bucle:
        ComparaB  A                     ; ComparaB Above/Below
        OR        AL, AL                ; ¿Son distintos?
        JZ        $_Iguales
        CambiaB
        MOV       DX, 1                 ; Han habido cambios
        $_Iguales:
        ADD       SI, __LonColumn
        ADD       DI, __LonColumn
      LOOP      $_Bucle
      OR        DX, DX                  ; Si han habido cambios...
    JNZ       $_Burbuja                 ; repasamos otra vez
  ; Mostramos por pantalla la matriz ordenada
    MOV       DX, OFFSET Matriz
    MOV       AH, 9
    INT       21h
  ; Salimos al MS-DOS
    MOV       AX, 4C00h                 ; Servicio 4Ch, mensaje 0
    INT       21h                    ; volvemos AL DOS
  Entrada ENDP                          ; cierra el procedimiento
  Matriz  DB  "Alfonso ", "Pedro   ", "Juan    ", "Felipe  ", "Ines    ",
              "Andres  ", "Joaquin ", "Raul    ", "Manuel  ", "Monica  ",
              "Luisa   ", "Roberto ", "Domingo ", "Miguel  ", "Tomas   ",
              "Isabel  ", "Maria   ", "Lucia   ", "Dionisio", "Victor  ", 
              10, 13, '$'

codigo ENDS
END Entrada

 

Esta en assembler, solo tienes que pasarlo a C++ :P

 

aquí tienes muchos ejemplos mas: http://www.abreojosensamblador.net/html/Pags/Cap07.html

 

suerte :rolleyes:

Edited by gemu
Link to comment
Share on other sites

encontre esto tal vez te sirva

 


/* reporta todos los elementos en forma preorden */
void preorden(struct nodo *arbol)
{
  if(arbol!=NULL)
  {
      cout<<" "<<arbol->dato;
      preorden(arbol->izq);
      preorden(arbol->der);
  }
}

/* reporta todos los elementos en forma enorden */
void enorden(struct nodo *arbol)
{
  if(arbol!=NULL)
  {
      enorden(arbol->izq);
      cout<<" "<<arbol->dato;
      enorden(arbol->der);
  }
}

/* reporta todos los elementos en forma posorden */
void posorden(struct nodo *arbol)
{
  if(arbol!=NULL)
  {
      posorden(arbol->izq);
      posorden(arbol->der);
      cout<<" "<<arbol->dato;
  }
}

/* ve si un elemento pertenece al arbol (recursiva)
si no esta devuelve cero
*/
/*int pertenece(struct nodo arbol,int d)
{
  if(arbol!=NULL)
  {
      if(d<arbol->dato)
          return pertenece(arbol->izq,d);
      else if (d>arbol->dato)
          return pertenece(arbol->der,d);
      else return 1;
  }
  else return 0;
}
*/
/* ve si un elemento pertenece al arbol (con bucle)
si no esta devuelve cero
*/

int pertenece(struct nodo *arbol,int d)
{
while(arbol!=NULL)
{
  if(d<arbol->dato)
   arbol=arbol->izq;
  else if(d>arbol->dato) 
   arbol=arbol->der;
  else return 1;
}
return 0;
}  

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...