mostrar numeros imperes de una lista con una funcion o procemiento recursivo
Publicado por Gaston (40 intervenciones) el 17/10/2020 18:44:03
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/***************************************************************************************************************
ejer2:Codificar un procedimiento que muestre los contenidos impares de los nodos
de una lista simplemente encadenada en forma recursiva.
(Aclaración: es el contenido impar, y no la posición impar.
Su declaración será: void mostrarrecursivaimpar (struct lista *com)
*********************************************************************************************************************/
Gente, el que me pueda dar una mano para resolver éste ejercicio se lo agradecería mucho.... !!!!
Adjunto el código en lenguaje C. que me pide usar ua funcion de tipo void recursiva de numeros impares
void mostrarrecursivaimpar (struct lista *com)
//---------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//---------------------------------------------------
struct lista
{
int num;
struct lista *sig;
struct lista *nuevo;
};
//--------------------------------------------------
void leer_numero(char cade[30], int &a)
{
printf("\n %s:",cade);
scanf("%d",&a);
fflush(stdin);
}
void armar_lista(struct lista *&com)
{
//declaro un puntero a struct lista
struct lista *p;
struct lista *ant;
struct lista *sig;
int n;
printf("\n ingrese el primer numero de la lista: ");
scanf("%d",&n);
fflush(stdin);
//si n==0 com apunta a NULL. Ojo !! com debe estar apuntado a NULL
if(n==0)
com=NULL;
else
{
//creo un nodo para com: "pido un nodo para com por unica vez, esto se hace aparte fuera del ciclo para no perderlo"
com= new struct lista;
com->num=n; //com apunta num que es n: es un valor numerico que yo ingreso.
com->sig=NULL; //com apunta sig que es NULL !!!
ant=com; //ahora com apunta a ant
printf("\n ingrese otro numero de la lista: (0) para terminar ");
scanf("%d",&n);
fflush(stdin);
while(n!=0)
{
p=new struct lista; //creo el nodo apuntado por p: "pido un nodo para p"
p->num=n; //p apunta num que es n: es un valor numerico que yo ingreso.
p->sig=NULL; //p apunta sig que es NULL !!!!
ant->sig=p; //ant apunta a sig que es p (aca hago el enlace)
ant=p; //ahora p apunta a ant
printf("\n ingrese otro numero de la lista: (0) para terminar ");
scanf("%d",&n);
fflush(stdin);
}
}
}
void mostrar_lista(struct lista *com)
{
struct lista *p;
p=com;
while(p!=NULL)
{
printf("\n%d",p->num);
p=p->sig;
}
}
void mostrarrecursivaimpar(struct lista *com)
{
}
void pausar()
{
printf("\n");
system("pause");
}
//----------------------------------------------------------------------
int main()
{
struct lista *comienzo;
int num;
printf("________________________________________________________ \n");
printf("\n");
armar_lista(comienzo);
mostrar_lista(comienzo);
pausar();
printf("\n");
printf("---------------------- Terminar ------------------");
return 0;
}
Valora esta pregunta


0