Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- typedef int TElemento;
- typedef struct nodo{
- TElemento elem;
- struct nodo* ptrSig;
- struct nodo* ptrAnt;
- }TNodo;
- typedef struct {
- TNodo *inicio;
- TNodo *fin;
- int cantElem;
- }TLista;
- void crearLista(TLista *);
- void insertaInicio(TLista *,TElemento);
- void insertaFin(TLista *,TElemento);
- void borraInicio(TLista *);
- void borraFin(TLista *);
- void imprimirLista(TLista *);
- int main(void){
- TLista lista;
- crearLista(&lista);
- insertaInicio(&lista,3);
- insertaInicio(&lista,32);
- insertaInicio(&lista,7);
- insertaInicio(&lista,4);
- insertaInicio(&lista,8);
- imprimirLista(&lista);
- insertaFin(&lista,4);
- insertaFin(&lista,4);
- insertaFin(&lista,4);
- insertaFin(&lista,4);
- insertaFin(&lista,5);
- insertaFin(&lista,6);
- insertaFin(&lista,9);
- imprimirLista(&lista);
- printf("Numero de elementos %d\n",lista.cantElem);
- borraInicio(&lista);
- borraInicio(&lista);
- imprimirLista(&lista);
- printf("Numero de elementos %d\n",lista.cantElem);
- borraFin(&lista);
- borraFin(&lista);
- imprimirLista(&lista);
- printf("Numero de elementos %d\n",lista.cantElem);
- }
- void crearLista(TLista *lista){
- lista->inicio = NULL;
- lista->fin = NULL;
- lista->cantElem = 0;
- }
- void insertaInicio(TLista *lista,TElemento elem){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->elem = elem;
- ptrNuevo->ptrAnt = NULL;
- ptrNuevo->ptrSig = NULL;
- if (lista->cantElem == 0){
- lista->fin = ptrNuevo;
- lista->inicio = ptrNuevo;
- }else{
- lista->inicio->ptrAnt = ptrNuevo;
- ptrNuevo->ptrSig = lista->inicio;
- lista->inicio = ptrNuevo;
- }
- (lista->cantElem)++;
- }
- void insertaFin(TLista *lista,TElemento elem){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->elem = elem;
- ptrNuevo->ptrAnt = NULL;
- ptrNuevo->ptrSig = NULL;
- if (lista->cantElem == 0){
- lista->inicio = ptrNuevo;
- }else{
- lista->fin->ptrSig = ptrNuevo;
- ptrNuevo->ptrAnt = lista->fin;
- lista->fin = ptrNuevo;
- }
- (lista->cantElem)++;
- }
- void borraInicio(TLista *lista){
- TNodo *ptrEliminar;
- if (lista->inicio != NULL){
- ptrEliminar = lista->inicio;
- if (lista->cantElem == 1){
- lista->inicio = NULL;
- lista->fin = NULL;
- }else{
- lista->inicio = lista->inicio->ptrSig;
- //lista->inicio->ptrAnt = NULL;
- }
- //free(ptrEliminar);
- (lista->cantElem)--;
- }else{
- printf("No se puede borrar de una cola vacia");
- }
- }
- void borraFin(TLista *lista){
- TNodo *ptrEliminar;
- if (lista->inicio != NULL){
- ptrEliminar = lista->fin;
- if (lista->cantElem == 1){
- lista->inicio = NULL;
- lista->fin = NULL;
- }else{
- lista->fin = lista->fin->ptrAnt;
- lista->fin->ptrSig = NULL;
- }
- free(ptrEliminar);
- (lista->cantElem)--;
- }else{
- printf("No se puede borrar de una cola vacia");
- }
- }
- void imprimirLista(TLista *lista){
- TNodo *ptrRec;
- ptrRec = lista->inicio;
- while (ptrRec != NULL){
- printf(" %d -> ",ptrRec->elem);
- ptrRec = ptrRec->ptrSig;
- }
- printf("NULL\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement