Estructuras dinámicas en C: Concepto de listas

  Рет қаралды 4,400

diego moisset de espanes

diego moisset de espanes

Күн бұрын

Пікірлер: 4
@codigo8099
@codigo8099 2 жыл бұрын
Buenas tardes profesor. Quería hacerle una sugerencia en cuanto a su sitio de internet que si puede ponerle un botón para ir a la siguiente lección y otro para atrás para no tener que regresar al main cada que avanza uno a la siguiente lección. Saludos y gracias por compartir sus conocimientos, me han servido de mucho sus clases.
@gastonrosales9471
@gastonrosales9471 3 жыл бұрын
Hola Diego. Te consulto por un programa de listas simplemente enlazada en lenguaje C. Lo resolví !! pero tengo dudas con el enunciado. Que dice lo siguiente: 1) Codificar una función que sume los elementos de una lista simplemente encadenada que estuvieran en posición impar. Hice el ejercicio me funciona. Pero tengo dudas con las funciones que implemente a) mostrar_posicion_impar() lo hace que los elementos de una lista simplemente encadenada que estuvieran en posición impar. Ejemplo: 1; 4; 5; 1; 14; 3 mostrar la posición de los nodos 4; 1; 3 */ Esto esta bien ? b) suma_impar() me suma los valores que son impares. Pregunta, estaría bien ... ? /******************************************************************************************** ejer 22) TP 3 Codificar una función que sume los elementos de una lista simplemente encadenada que estuvieran en posición impar. ********************************************************************************************/ #include #include #include #include //---------------------------- struct lista { int num; struct lista *sig; struct lista *nuevo; }; //-------------------------------------------------- void armar_lista(struct lista *&com) { //declaro un puntero a struct lista struct lista *p; struct lista *ant; struct lista *sig; int n; printf(" 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(" 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(" 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(" %d",p->num); p=p->sig; } } //------------------------------------------------------------------------------------------ /* Elementos de una lista simplemente encadenada que estuvieran en posición impar. ejemplo: una lista 1; 4; 5; 1; 14; 3 mostrar la posción de los nodos 4; 1; 3 */ void mostrar_posicion_impar(struct lista *com) { struct lista *p; p=com; if(com==NULL ) printf(" lista vacia "); else printf(" hay uno en la lista... "); printf(" "); if(com->sig !=NULL ) //si no coloco esta sentencia: p=com->sig; puede recorrer la lista de los que estan en posicion impar p=com->sig; // si tengo por los menos uno o dos o más nodos en la poscion par. while(p!=NULL) { printf(" %d",p->num); p=p->sig; if(p!=NULL) p=p->sig; } //podria colocar un else que me diga hay uno solo !!!! printf(" "); printf(" la lista tiene un solo nodo "); printf(" "); } //------------------------------------------------------- int suma_impar(struct lista *com) { struct lista *p; int res; p=com; res=0; while(p!=NULL) { if(p->num % 2 !=0) //aca digo si el valor que esta en la lista es impar o no. Si es impar los suma !! res=res+p->num; p=p->sig; } return res; } //------------------------------------------------------------ void leer_numero(char cade[30], int &a) { printf(" %s:",cade); scanf("%d",&a); fflush(stdin); } //------------------------------------------ void pausar() { printf(" "); system("pause"); } //-------------------------------------------------------- int main() { printf("___________________________________________________ "); printf(" "); struct lista *comienzo; //NO hace falta hacer esta sentencia. No es ncesario pedir un nodo ya lo tenemos !!! // comienzo = new struct lista; //pido un nodo //llamo al procediento y le paso el parámetro armar_lista(comienzo); //llamo al procedimiento y le paso el parámetro //mostrar_lista(comienzo); printf(" mostrar posicion impar "); printf(" "); mostrar_posicion_impar(comienzo); printf(" "); printf(" Sumo la cantidad de numeros impares %d",suma_impar(comienzo)); printf(" "); printf("____________________________________________________ "); pausar(); return 0; } gracias !!
@diegomoissetdeespanes
@diegomoissetdeespanes 3 жыл бұрын
En principio veo correcto los dos algoritmos: - Imprimir los nodos de las posiciones impares - Sumar todos los nodos que tienen un valor impar.
@tomasslootmans
@tomasslootmans Жыл бұрын
Que grande cordobé, tremenda obra la suya y lo que brinda a los que queremos aprender esta disciplina. No tiene precio. Abrazo desde entre ríos maestro!!
Estructuras dinámicas en C: Listas tipo Pila - 1
17:08
diego moisset de espanes
Рет қаралды 10 М.
Estructuras dinámicas en C: Listas tipo Cola - Problema de aplicación
12:08
diego moisset de espanes
Рет қаралды 2,1 М.
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 16 МЛН
25   Curso básico de C - Asignación Dinámica de Memoria
13:28
codigofacilito
Рет қаралды 35 М.
Estructuras dinámicas en C: Conceptos de árboles
12:03
diego moisset de espanes
Рет қаралды 1,1 М.
Punteros dobles en C
18:45
YouTics
Рет қаралды 17 М.
¡Aprende Paso a Paso Como Usar Listas Enlazadas!
10:51
Chio Code
Рет қаралды 56 М.
¿Cómo implementar listas enlazadas en C? (Parte 1)
17:05
Ismael Robles
Рет қаралды 3,4 М.
Tutorial de C - 10. Memoria dinámica
8:02
makigas
Рет қаралды 27 М.
103. Programación en C++ || Listas || Concepto de Lista Enlazada
8:08
Programación ATS
Рет қаралды 249 М.