Lo siento por mi desaparición pero estoy demasiado perdido entre estudiar y trabajar... Además estoy aprendiendo front-end en condiciones y.., le faltan horas a mi día. Creo que me voy a comprar un reloj de esos de 40 horas a ver...
Os traigo un código que les he puesto a mis alumnos de la academia. El enunciado es simple y tal que así:
Crea en C (con cabecera y código separados) una estructura de Array en Nodos, en la que cada Nodo tendrá
como atributos un entero (valor), un entero (tam) y un puntero al siguiente Nodo. Además debes crear las
siguientes funciones:
Crear(Primero* primero, int n) Crea todos los nodos inicializándolos a cero.
Destruir(Primero* primero) Borra todos los nodos, liberando el espacio de disco.
Obtener(Primero primero, int index, int *ok, int *valor) Devuelve en valor el valor de ese trozo de array. En
ok devuelve un 1 si se ha podido y un 0 en caso contrario.
Cambiar(Primero* primero, int index, int valor) Cambia el valor de la posición index por el nuevo valor
Mostrar(Primero primero) Imprime el array.
Aquí tenéis la cabecera:
#ifndef MAIN_H #define MAIN_H typedef struct Array* Primero; struct Array { int valor; int tam; Primero sig; }; void Crear(Primero* primero, int n); void Destruir(Primero* primero); void Obtener(Primero primero, int index, int *ok, int *valor); void Cambiar(Primero* primero, int index, int valor); void Mostrar(Primero primero); #endif /* MAIN_H */
Y aquí os dejo el código:
#include <stdio.h> #include <stdlib.h> #include "main.h" /* * */ void Crear(Primero* primero, int n) { *primero = (Primero)malloc(sizeof(struct Array)); (*primero)->tam = n; (*primero)->valor = 0; (*primero)->sig = NULL; Primero ant = *primero; int i; for(i=1; i<n; i++) { Primero nuevo; nuevo = (Primero)malloc(sizeof(struct Array)); nuevo->valor=0; nuevo->tam = (*primero)->tam; nuevo->sig = NULL; ant->sig = nuevo; ant = ant->sig; } } void Destruir(Primero* primero) { Primero ptr; while (*primero != NULL) { ptr=(*primero)->sig; free((void *)*primero); *primero=ptr; } } void Obtener(Primero primero, int index, int *ok, int *valor) { if((*valor)<primero->tam) { int i; Primero aux = primero; for(i = 0; i < index; i++) { aux = aux->sig; } (*valor)=aux->valor; (*ok) = 1; } else { (*ok) = 0; } } void Cambiar(Primero* primero, int index, int valor) { int i; Primero aux = *primero; for(i = 0; i < valor; i++) { aux = aux->sig; } aux->valor = valor; } void Mostrar(Primero primero) { int ultimo = primero->tam; int i; printf("{"); for(i=0; i < ultimo-1; i++) { printf("%d, ", primero->valor); primero = primero->sig; } printf("%d}", primero->valor); fflush(stdout); } int main() { printf("Vamos a crear un array\n"); fflush(stdout); Primero p; Crear(&p, 5); // int ok; // int valor; // Obtener(p, 3, &ok, &valor); // printf("%d", valor); // fflush(stdout); Cambiar(&p, 2, 1); Cambiar(&p, 3, 4); Mostrar(p); Destruir(&p); return (EXIT_SUCCESS); }
Pues eso gente, si necesitáis ayuda con algo pedidla por aquí (no me metáis más de 2 faltas de ortografía por palabra por favor) y espero que os sigan sirviendo todas éstas cosillas ;)
Saludos
No hay comentarios:
Publicar un comentario