Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: lista.h
- * Author: Pablo
- *
- * Created on 25 de mayo de 2014, 01:39 AM
- */
- #ifndef LISTA_H
- #define LISTA_H
- typedef int TElemento;
- typedef struct nodo{
- TElemento elem;
- struct nodo* ptrSig;
- }TNodo;
- typedef struct lista{
- TNodo *inicio;
- TNodo *fin;
- int cantElem;
- }TLista;
- void crearLista(TLista *);
- void listaUnitaria(TLista *, TElemento);
- void anadeIzq (TLista *, TElemento);
- void anadeDer(TLista *, TElemento);
- TElemento consultaIzq(TLista *);
- TElemento consultaDer(TLista *);
- void eliminaIzq(TLista *);
- void eliminarDer(TLista *);
- int esVacia(TLista *);
- TLista concatenaListas(TLista *,TLista *);
- int longitudLista(TLista *);
- #endif /* LISTA_H */
- #include <stdio.h>
- #include <stdlib.h>
- #include "lista.h"
- void crearLista(TLista *lista){
- lista->inicio = NULL;
- lista->fin = NULL;
- lista->cantElem = 0;
- }
- void listaUnitaria(TLista *lista, TElemento elem){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->elem = elem;
- ptrNuevo->ptrSig = NULL;
- lista->inicio = ptrNuevo;
- lista->fin = ptrNuevo;
- lista->cantElem = 1;
- }
- void anadeIze(TLista *lista, TElemento elem){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->elem = elem;
- ptrNuevo->ptrSig = NULL;
- if (lista->inicio == NULL){
- listaUnitaria(lista,elem);
- }else{
- ptrNuevo->ptrSig = lista->inicio;
- lista->inicio = ptrNuevo;
- }
- (lista->cantElem)++;
- }
- void anadeDer(TLista *lista, TElemento elem){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->elem = elem;
- ptrNuevo->ptrSig = NULL;
- if (lista->inicio == NULL){
- listaUnitaria(lista,elem);
- }else{
- lista->fin->ptrSig = ptrNuevo;
- lista->fin = ptrNuevo;
- }
- (lista->cantElem)++;
- }
- TElemento consultaIzq(TLista *lista){
- return (lista->inicio->elem);
- // Si no hay nada, devolverá nulo.
- }
- TElemento consultaDer(TLista *lista){
- return (lista->fin->elem);
- // Si no hay nada, devolverá nulo.
- }
- void eliminaIzq(TLista *lista){
- TNodo *ptrEliminar;
- if (lista->inicio != NULL){ // No se puede eliminar de una lista vacia
- ptrEliminar = lista->inicio;
- lista->inicio = lista->inicio->ptrSig;
- free(ptrEliminar);
- (lista->cantElem)--;
- }
- }
- void eliminaDer(TLista *lista){
- TNodo *ptrEliminar, *ptrRec;
- ptrRec = lista->inicio;
- ptrEliminar = lista->fin;
- while (ptrRec->ptrSig->ptrSig != NULL){
- ptrRec = ptrRec->ptrSig;
- }
- lista->fin = ptrRec;
- ptrRec->ptrSig = NULL;
- free(ptrEliminar);
- (lista->cantElem)--;
- }
- int esVacia(TLista * lista){
- return(lista->cantElem == 0);
- }
- TLista concatenaLista(TLista *lista1 , TLista *lista2){
- TLista listaConcat;
- crearLista(&listaConcat);
- TNodo *ptrRec1, *ptrRec2;
- ptrRec1 = lista1->inicio;
- ptrRec2 = lista2->inicio;
- while(ptrRec1 != NULL){
- anadeDer(&listaConcat,ptrRec1->elem);
- ptrRec1 = ptrRec1->ptrSig;
- }
- while(ptrRec2 != NULL){
- anadeDer(&listaConcat,ptrRec2->elem);
- ptrRec2 = ptrRec2->ptrSig;
- }
- return listaConcat;
- }
- int longitudLista(TLista *lista){
- return (lista->cantElem);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement