
30/09/2006, 08:34
|
| | Fecha de Ingreso: septiembre-2006
Mensajes: 15
Antigüedad: 18 años, 5 meses Puntos: 0 | |
Cita:
Iniciado por mechy86 dale! me gustaria que me mandes... estoy haciendo algo... veremos si me sale Archivo lista.h Cita: #ifndef _LISTA_H
#define _LISTA_H
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int Y;
int N;
char tirada[5];
}elemento;
typedef struct lnodo nodo;
struct lnodo {
elemento e;
struct lnodo *siguiente;
};
typedef struct {
nodo *anterior;
nodo *primero;
}lista;
/* Signatura */
lista LISTA_crea();
lista LISTA_anadir(lista, elemento);
lista LISTA_quitar(lista);
elemento LISTA_consultar(lista);
int LISTA_vacia(lista);
lista LISTA_iralprincipio (lista);
lista LISTA_avanza (lista);
lista LISTA_destruye (lista);
int LISTA_final (lista);
#endif Archivo lista.c Cita: #include <string.h>
#include "lista.h"
lista LISTA_crea(){
lista l;
l.primero=(nodo*)malloc(sizeof(nodo));
if (l.primero!=NULL){
l.primero->siguiente=NULL;
l.anterior=l.primero;
}
return l;
}
lista LISTA_anadir(lista l,elemento e){
nodo *tmp;
tmp=(nodo*)malloc(sizeof(nodo));
if (tmp!=NULL){
tmp->siguiente=l.anterior->siguiente;
tmp->e=e;
l.anterior->siguiente=tmp;
l.anterior=l.anterior->siguiente;
}
return l;
}
lista LISTA_quitar(lista l){
nodo *tmp;
if (l.anterior->siguiente!=NULL){
tmp=l.anterior->siguiente;
l.anterior->siguiente=tmp->siguiente;
free(tmp);
}
return l;
}
elemento LISTA_consultar(lista l){
elemento e;
if (!LISTA_final(l)&&!LISTA_vacia(l)){
e=l.anterior->siguiente->e;
}
return e;
}
int LISTA_vacia(lista l){
int tmp=0;
if (l.primero->siguiente==NULL){
tmp=1;
}
return tmp;
}
int LISTA_final(lista l){
int tmp=0;
if (l.anterior->siguiente==NULL){
tmp=1;
}
return tmp;
}
lista LISTA_iralprincipio(lista l){
l.anterior=l.primero;
return l;
}
lista LISTA_destruye(lista l){
l=LISTA_iralprincipio(l);
while (!LISTA_final(l)){
l=LISTA_quitar(l);
}
free(l.primero);
l.anterior=l.primero=NULL;
return l;
}
lista LISTA_avanza(lista l){
if (!LISTA_final(l)){
l.anterior=l.anterior->siguiente;
}
return l;
} |