domingo, 15 de julio de 2012

Algoritmos Lista simple

Insertar 
/* inserción en una lista vacía */
int ins_en_lista_vacia (Lista * lista, char *dato){
  Element *nuevo_elemento;
  if ((nuevo_elemento = (Element *) malloc (sizeof (Element))) == NULL)
    return -1;
  if ((nuevo _elemento->dato = (char *) malloc (50 * sizeof (char)))
      == NULL)
    return -1;
  strcpy (nuevo_elemento->dato, dato);

  nuevo_elemento->siguiente = NULL;
  lista->inicio = nuevo_elemento;
  lista->fin = nuevo_elemento;
  lista->tamaño++;
  return 0;
}


1 Inicio
2 Declarar el elemento a insertar
3  Asignar un espacio de memoria para el nuevo elemento
4 Asignar nuevo_elemento->datos
5  Asignar el valor NULL  del nuevo_elemento al siguiente
6 Asignar el valor del nuevo elemento a lista -> inicio
7 Asignar el valor del nuevo elemento a lista -> fin
8 Se actualiza el tamaño
9 Fin




 Eliminar 
/* eliminación al inicio de la lista */
int sup_inicio (Lista * lista){
  if (lista->tamaño == 0)
    return -1;
  Element *sup_elemento;
  sup_element = lista->inicio;
  lista->inicio = lista->inicio->siguiente;
  if (lista->tamaño == 1)
    lista->fin = NULL;
  free (sup_elemento->dato);
  free (sup_elemento);
  lista->tamaño--;
  return 0;
}
 
1 incio
2 Se declara el apuntador sup_inicio para guardar la dirección que se va a eliminar.
3 Si lista -> tamaño es exactamente igual a cero se retornara menos uno.
4 Declarar el apuntador sup_elemento 
5 Asignar el valor de sup_element a lista -> inicio.
6 Asignar el valor de lista -> incio a lista -> inicio -> siguiente.
7 Si lista -> tamaño es exactamente igual a uno entonces lista -> fin se le asignara el valor de NULL.
8 Liberar la memoria ocupada por el sup_elemento -> dato.
9 Se actualiza el tamaño de la lista.
 

Eliminar II



void borrar(void) { char* q;  q=crecup();  if(q==NULL)  {  printf("No hay datosn");  return;  } printf("Este es el dato recuperado y borrado: Dato numero %d: %s\n",rpos+1,q);  free (q); }
1 Inicio
2 Declarar una variable
3 La variable es exactamente igual a NULL entonces imprimir no hay datos 
4 Imprimir  el dato borrado
5 Liberar el espacio de memoria de la variable



Buscar 

int buscar(struct nodo *p, int valor) { if(p==NULL) return(FALSE); do{
if(p->dato == valor) return(TRUE); else p = p->sig; } while(p != NULL);
return(FALSE); }
**Nota antes tenemos que definir TRUE Y FALSE
1 Inicio
2 Si valor esta dentro de la lista retorna TRUE  en caso contrario dice FALSE
3 Fin

No hay comentarios:

Publicar un comentario