sábado, 13 de noviembre de 2010

C - Listas Enlazadas

Lenguajes de Programacón - Semana 12 - PUNTOS EXTRA

Esta aplicacion que escribí el semestre pasado nos permite realizar de una forma simple una lista enlazada. Primero se crea un nodo inicial el cual despues de llena con la información que nos es pedida, despues se nos pregunta si queremos seguir agregando nodos, esto se hace repetiviamente hasta que decidimos no agregar mas datos a la lista, al llegar a este punto la lista se imprime mostrandonos todos los datos incluidos.
// Programa que arma una lista doblemente enlazada

# include 

typedef struct nodoN{
  int info;
  int cabecera;
  struct nodoN *prev;
  struct nodoN *next;
} NODO;

int main(void){
  char pregunta;
  int i = 1;
  NODO *list, *p, *q;
  list=(NODO*)malloc(sizeof(NODO));
  list->info = 0;
  list->cabecera = 1;
  list->prev = NULL;
  q = list;
  p = (NODO*)malloc(sizeof(NODO));
  list->next=p;
  do{
      ++list->info;
      printf("Dame un dato para la lista -> ");
      scanf("%d", &p->info);
      p->cabecera = 0;
      p->prev = q;
      p->next = NULL;
      printf("Deseas seguir (s/n)");
      scanf("%s", &pregunta);
      if(pregunta == 's' || pregunta == 'S'){
          q = p;
          p = (NODO*)malloc(sizeof(NODO));
          q->next = p;
      }
  } while(pregunta != 'n' && pregunta != 'N');
  q = list;
  printf("los nodos de la lista son %d\n", q->info);
  do{
      if(q == list){
          q = list->next;
      } else {
          q = q->next;
      }
      printf("%d.-\t %d\n", i, q->info);
      i++;
  } while(q->next != NULL);
  return 0;
}

DESCARGA: lista.c

Para compilar: gcc -o lista lista.c
Para ejecutar: ./lista


EJECUCION:



La lista utiliza punteros y su tamaño es definido por la funcion malloc. Es un ejemplo basico de una lista, de este esqueleto podemos hacer otras mas extensas y con mas funcionalidad

SALUDOS!!! ^_^

2 comentarios:

  1. Pues, me informa que no es para el lab. Que sean 4 para la clase entonces :P

    ResponderEliminar