Foros del Web » Programación para mayores de 30 ;) » C/C++ »

como guardar lista enlazada en un archivo

Estas en el tema de como guardar lista enlazada en un archivo en el foro de C/C++ en Foros del Web. Hola¡, tengo una duda que no consigo aclarar, en C o C++, yo creo una estructura dinamica en la cual el ultimo miembro se supone ...
  #1 (permalink)  
Antiguo 25/10/2006, 13:09
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
Antigüedad: 17 años, 4 meses
Puntos: 0
como guardar lista enlazada en un archivo

Hola¡, tengo una duda que no consigo aclarar, en C o C++, yo creo una estructura dinamica en la cual el ultimo miembro se supone que es un puntero a la siguiente estructura, si solo hay una este contiene un NULL, entonces mis dudas son: que sentido tiene el puntero que apunta a la siguiente estructura si yo quiero guardarlas en modo binario.
  #2 (permalink)  
Antiguo 25/10/2006, 13:41
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 18 años, 11 meses
Puntos: 17
No tiene ningún sentido. El tema es que tienes que guardar los datos, no la estructura que uses para manejarlos.
  #3 (permalink)  
Antiguo 25/10/2006, 13:58
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 18 años, 11 meses
Puntos: 47
Pregunta

De que sirve guardar de en la forma que sea el puntero en un archivo si la asignación de memoria del nodo en el momento en que se creo es aleatoria, se puede crear en cualquier parte de la memoria y no siempre será la misma
  #4 (permalink)  
Antiguo 26/10/2006, 14:56
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
Antigüedad: 17 años, 4 meses
Puntos: 0
gracias, creo que voy entendiendolo.
  #5 (permalink)  
Antiguo 22/12/2006, 07:53
 
Fecha de Ingreso: diciembre-2006
Mensajes: 13
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: como guardar lista enlazada en un archivo

Sobre como guardar los datos de una lista de enteros, les paso un ejercicio que tuve que realizar para guardar nros de legajo de alumnos en un archivo de texto o binario:
>>Cambios realizados en base a las sugerencias: :)
Código:
#include<stdio.h>
#include<stdlib.h>

typedef struct n *pnodo;
typedef struct n
{
	int LU;
	pnodo sig;
}nodo;

void CargarListaEnteros(pnodo *lista)
{
	pnodo aux;

	aux=(pnodo) malloc (sizeof(nodo));

	printf("Ingrese un numero para la lista:\n");
	scanf("%i",&(aux->LU));
	getc(stdin);

	(*lista)=aux;

	while(aux->LU!=(-1))
	{
		aux->sig=(pnodo) malloc (sizeof(nodo));
		aux=aux->sig;
		printf("Ingrese un numero para la lista:\n");
		scanf("%i",&(aux->LU));
		getc(stdin);
	}
	aux->sig=NULL;
}

void MostrarLista(pnodo lista)
{
	int nro=1;
	pnodo aux;
	aux=lista;

	while(aux!=NULL)
	{
		printf("|Lista: %i|LU: %i|\n",nro,aux->LU);
		aux=aux->sig;
		nro++;
	}
}

void CopiarLISTAdeEnterosEnArch(pnodo copialista)
{
	FILE  *archivobin, *archivotxt;
	int nro;
	char caracter;

	printf("Escribir la lista de los legajos de los alumnos en un archivo:\n");
	printf("(B)inario o de texto (cualquier letra): ");
	scanf("%c",&caracter);
	getc(stdin);

	archivobin=fopen("Listalumnos.alu","wb");
	archivotxt=fopen("Listalumnos.txt","w");

	if((archivotxt==NULL)&&(archivotxt==NULL))
		printf("Error al acceder a los archivos...\n");
	else
	{
		while(copialista!=NULL)
		{
			if(caracter=='B')
			{
				nro=copialista->LU;
				fwrite(&nro,sizeof(int),1,archivobin);
			}
			else
				fprintf(archivotxt,"%i\n",copialista->LU);
			copialista=copialista->sig;
		}
	}
	fclose(archivobin);
	fclose(archivotxt);
}

int main (void)
{
	pnodo lista=NULL;

	printf("Se Cargara la lista de legajos de Alumnos|con -1 termina y se lo incluye ademas:\n\n");
	CargarListaEnteros(&lista);
	printf("\n");
	printf("La lista resultante es:\n");
	MostrarLista(lista);
	printf("\n");
	printf("Se copia la lista resultante en un archivo:\n");
	CopiarLISTAdeEnterosEnArch(lista);

	return 0;
}

Última edición por Aprendiz-DAO; 22/12/2006 a las 08:17
  #6 (permalink)  
Antiguo 22/12/2006, 07:58
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 18 años, 11 meses
Puntos: 17
Re: como guardar lista enlazada en un archivo

No reabras temas zanjados de hace meses :)

Por otra parte, tu código es extraño. Por ejemplo, ¿para qué pides como argumentos dos "FILE *" si no les utilizas para nada? Decláralos en la función que los use. ¿Por qué declaras "lista" y "copialista" simplemente para luego hacer "copialista = lista"?

Etc ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:23.