elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Lista Simplemente enlazada ayuda en: 11 Diciembre 2014, 03:26 am
Buenas noches tengo entendido que una lista simplemente enlazada y lista circular simple son casi parecidas, aca les dejo un TDA de una lista simplemente enlazada y quisiera que me den las modificaciones para que sea una lista circular simple muchas gracias

---------------------
#include <stdio.h>
#include <stdlib.h>

// Lista simplemente enlazada
struct tnodo{
   int dato;
   struct tnodo *siguiente;
};

// PROCEDIMIENTOS
// Creación de la Lista Simple
void crearLista(tnodo **lista)
{
   (*lista)=NULL;
}

bool listaVacia (tnodo *lista)
{
   if(lista == NULL)
   {
      return true;
   }
   else
   {
      return false;
   }   
}

bool listaLlena (tnodo *nodo)
{
   if(nodo == NULL)
   {
      return true;
   }
   else
   {
      return false;
   }
}

tnodo* crearNodo (int dato) //crea un nodo insertandole el dato recibido
{
   tnodo *nodo=(tnodo*)malloc(sizeof(tnodo));

   if (listaLlena(nodo)==false)
   {
      nodo->dato=dato;
      nodo->siguiente=NULL;
   }
   return (nodo);
}

// Agrega al final de la lista
void agregarFinal (tnodo **lista, int dato)
{
   struct tnodo *nodo,*aux;
    nodo = crearNodo(dato);
   if (*lista ==NULL)
   {
        *lista=nodo;
    }
    else
    {
        aux=*lista;
        while (aux->siguiente != NULL)
        {
            aux = (aux)->siguiente;         
        }
        aux->siguiente = nodo;   
    }
}

// Elimina un nodo al ultimo de la lista
void eliminarFin (tnodo **lista, int *sacado)
{
   tnodo *listaAux = *lista;
   tnodo *listaAux2 = *lista;
    if (listaVacia(*lista)==false)
   {
        while(listaAux->siguiente!=NULL)
        {
            listaAux2=listaAux2->siguiente;
            if(listaAux2->siguiente!=NULL)
            {
                listaAux= listaAux2;
            }
            else
            {
               
                listaAux=listaAux->siguiente;
                *sacado = (listaAux)->dato;
            }             
        }
        *lista=listaAux;   
    }
    else
    {
        *sacado=(*lista)->dato;
        *lista = NULL;
    }
}

// Devolver el dato del primer nodo
int verInicio(tnodo *lista)
{
   if (listaVacia(lista)==false)
   {
      //tnodo *nodo = lista;
      //return nodo->dato;
      return (lista)->dato;
   }else
    {
        printf("Lista Vacia \n");
    }   
}

// Devolver el dato del ultimo nodo
int verFinal(tnodo *lista)
{
   int dato;
    if(listaVacia(lista)==false)
   {
        while (lista->siguiente != NULL)
        {
            lista=(lista)->siguiente;         
        }
        return (lista)->dato;
    }else
    {
        printf("Lista Vacia \n");
    }   
}

// Muestra todos los elementos de la Lista */
void mostrarElementos(tnodo *lista){
    if(listaVacia (lista)==false)
   {
        while (lista!=NULL){
            printf("\n %d",lista->dato);
            lista=(lista)->siguiente;
        }
    }else
    {
        printf("Lista Vacia \n");
    }
}

2  Programación / Programación C/C++ / Lista circular simple (LCS) en: 11 Diciembre 2014, 01:40 am
Buenas noches queria saber si me pueden ayudar con este problema:

Mediante LCS implemente una PILA de caracteres con sus operaciones basicas:
a)Crear una pila
b)Agregar un elemento a la pila
c)Sacar un elemento de la pila
d)Ver el elemento del tope de la pila(sin eliminarlo)

Se que es medio complicado pero aun quesea algún ejemplo como para modificarlo desde ya muchas gracias
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines