Fecha y hora actual: Miércoles 13 Nov 2019 06:49
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Impresion Recursiva

Responder al Tema

Índice del Foro > C, C#, Visual C++ > Impresion Recursiva

Autor Mensaje
Gemin21



Registrado: 19 Oct 2019
Mensajes: 1

Mensaje Publicado: Sábado 19 Oct 2019 22:57

Título del mensaje: Impresion Recursiva

Responder citando

Hola, tengo un problema con mi funcion imprimirLista ya que al principio la tenia con un while, pero ahora quiero imprimirla de manera recursiva, tengo una parte hecha en el if y quería saber como completar la función, gracias.


Código:
  1.  


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

typedef struct Nodo{

int valor;
struct Nodo *siguiente;

}Nodo;

typedef struct Lista{

Nodo *cabeza;
int longitud;

}Lista;


void inicializacion (Lista *);
int esVacia(Lista *);
void insertarListaVacia(Lista *);
void insertarInicio(Lista *);
void imprimirLista(Lista *);
void insertarFinal(Lista *);
int buscarElemento(Lista *, int);


int main(){

Lista lista;

inicializacion(&lista);


if(esVacia(&lista)==1){
printf("es vacia\n");
}else{
printf("tiene elementos\n");
}

insertarListaVacia(&lista);
imprimirLista(&lista);

insertarInicio(&lista);
imprimirLista(&lista);

insertarInicio(&lista);
imprimirLista(&lista);

insertarInicio(&lista);
imprimirLista(&lista);

insertarFinal(&lista);
insertarFinal(&lista);
insertarFinal(&lista);
imprimirLista(&lista);



}

void inicializacion (Lista *lista){
lista->cabeza = NULL;
lista->longitud = 0;
}

void insertarListaVacia(Lista *lista){

Nodo *nuevoNodo = malloc(sizeof(Nodo *));
nuevoNodo->valor = 1;
nuevoNodo->siguiente = NULL;
lista->cabeza = nuevoNodo;
lista->longitud += 1;
}

int esVacia(Lista *lista){

if(lista->cabeza == NULL){
return 1;
}else{
return 0;
}

}

//Imprimir de forma recursiva

void imprimirLista(Lista *lista){
Nodo *nodoActual;
nodoActual = lista->cabeza;

if(nodoActual->siguiente == NULL){
printf ("%d ",nodoActual->valor);
}else{

}


printf("\n");
}


void insertarInicio(Lista *lista){

Nodo *nuevoNodo = malloc(sizeof(Nodo *));
nuevoNodo->valor = 0;
nuevoNodo->siguiente = lista->cabeza;

lista->cabeza = nuevoNodo;
lista->longitud += 1;

}

void insertarFinal(Lista *lista){
Nodo *nuevoNodo = malloc(sizeof(Nodo *));
Nodo *actual = lista->cabeza;

while(actual->siguiente!=NULL){
actual = actual->siguiente;
}
nuevoNodo->valor = actual->valor+1;
nuevoNodo->siguiente = NULL;
actual->siguiente = nuevoNodo;
lista->longitud+=1;

}

int buscarElemento(Lista *lista, int buscado){

Nodo *actual = lista->cabeza;
int bandera = 0;
while(actual!=NULL){

if(actual->valor == buscado){
bandera = 1;
break;
}
actual = actual->siguiente;
}

return bandera;

}

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Pagina web tienda + impresion (¿Cómo?)

WhiteSkull PHP 5 Lunes 17 Feb 2014 14:44 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Controls WebBrowser quitar pié de página en imp...

Xerart Visual Basic .NET 0 Sábado 14 Dic 2013 23:22 Ver último mensaje
El foro no contiene ningún mensaje nuevo

[ANSI C] Torres de Hanoi. Ayuda con solución re...

CrashNebula C, C#, Visual C++ 2 Domingo 26 May 2013 20:00 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Problema básico de impresión por consola + Ecli...

Sebastián Marcos C, C#, Visual C++ 0 Viernes 15 Feb 2013 20:16 Ver último mensaje
El foro no contiene ningún mensaje nuevo

invertir numero de forma recursiva

Blackaman_ Java 1 Martes 15 Ene 2013 22:06 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,