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

lunes, 2 de julio de 2012

Colas con enteros c++


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <todas.h>
#define MAX 100
void datos (void)
    {
    system("color 6");
    int a=15,b=8;
    gotoxy (a,b);
    printf ("Edith Juarez Juarez \n\n");
    int c=20,d=5;
    gotoxy (c,d);
    printf ("Grupo 351\n\n");
    for(int x=3;x<=40;x++){
    gotoxy(x,3);
    printf("*");
  }
    for(int x=3;x<=40;x++){
    gotoxy(x,10);
    printf("*");
  }
  // getch();
  }
char *p[MAX];
char *crecup(void);
void calmac(char *c);
int spos, rpos;
void intro(void);
void revisar(void);
void borrar(void);

int main(void)
{
    datos();
    char s[MAX];
    register int t;
    spos=0;
    rpos=0;

    for(t=0; t<MAX; ++t) p[t]=NULL;
    for(;;)
    {
    printf("\n1.-Introducir\n2.-Revisar,\n3.-Borrar\n4.- Salir\n");
    printf("\nEscriba el numero\n\n");
    gets(s);
    *s=toupper(*s);
    switch(*s)
    {  
    case'1':intro(); break;
    case'2':revisar(); break;
    case'3':borrar(); break;
    case'4':exit(0); break;
    }
    }
    return 0;
    }
    void intro(void)
    {
    char s[MAX], *p;
    do
    {
    printf("\nDigite el numero %d:\n", spos+1);    
    gets(s);
    system("cls");
    if(*s=='\0')break;
    p=(char*)malloc(strlen(s)+1);
    if(!p)
    {
    printf("No hay memoria reservada\n");
    return;
    }
    strcpy(p,s);
    calmac(p);
    }
    while(*s);
    }
       
    void revisar(void)
    {
    int t;
    if(rpos==spos)
    {
    printf("No hay datos\n");
    return;
    }
    for(t=rpos; t<spos; t++)
    printf("\nNumero %d: %s\n", t+1, p[t]);
    }
    void borrar(void)
    {
    char *q;
    q=crecup();
    if(q==NULL)
    {
    printf("No hay datos\n");
    return;
    }
    printf("Este es el dato recuperado y borrado: Dato numero %d: %s\n", rpos+1, q);
    free(q);
    }
    void calmac(char *q)
    {
    if(spos==MAX)
    {
    printf("\nlA COLA ESTA LLENA\n");
    return;
    }
    p[spos]=q;
    spos++;
    }
    char *crecup(void)
    {
    if(rpos==spos)
    {
    printf("\nNo hay datos\n");
    return NULL;
    }
    rpos++;
    return p[rpos-1];
    }