C/Visual C - ORDENACION DE DATOS POR LISTAS VINCULADAS

 
Vista:

ORDENACION DE DATOS POR LISTAS VINCULADAS

Publicado por LOURDES MARQUEZ (4 intervenciones) el 21/05/2001 18:53:44
HOLA.......
NECESITO UN PROGRAMA QUE ME LEA DE UN ARCHIVO YA EXISTENTE EN MI DISCO( TXT) , UNA SERIE DE NOMBRES, Y ME LOS ORDENE Y GUARDE EN OTRO ARCHIVO (YA EXISTENTE O POR CREAR).UTILIZANDO LISTAS VINCULADAS.....................SI ME LO PUEDEN DOCUMENTAR SE LOS AGRADECERE ETERNAMENTE , YA QUE HAY QUE EXPLICARLE AL PROFESOR ...BUENO ESOS ES TODO

ATT. LOURDES
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Programa para leer y ordenar nombres utilizando listas vinculadas desde un archivo de texto

Publicado por Alejandro (913 intervenciones) el 25/09/2024 19:03:27
Hola Lourdes.

Aquí tienes un ejemplo de programa en C++ que lee una serie de nombres de un archivo de texto existente en tu disco, los ordena utilizando listas vinculadas y los guarda en otro archivo existente o crea uno nuevo:

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
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
// Definición de la estructura de un nodo de la lista vinculada
struct Nodo {
    string nombre;
    Nodo* siguiente;
};
 
// Función para insertar un nombre en la lista vinculada
void insertarNombre(Nodo*& lista, string nombre) {
    Nodo* nuevoNodo = new Nodo;
    nuevoNodo->nombre = nombre;
    nuevoNodo->siguiente = nullptr;
 
    if (lista == nullptr) {
        lista = nuevoNodo;
    } else {
        Nodo* actual = lista;
        while (actual->siguiente != nullptr) {
            actual = actual->siguiente;
        }
        actual->siguiente = nuevoNodo;
    }
}
 
// Función para ordenar la lista vinculada de nombres
void ordenarNombres(Nodo*& lista) {
    if (lista == nullptr || lista->siguiente == nullptr) {
        return;
    }
 
    Nodo* actual = lista;
    Nodo* siguiente = nullptr;
    string temp;
 
    while (actual->siguiente != nullptr) {
        siguiente = actual->siguiente;
 
        while (siguiente != nullptr) {
            if (actual->nombre > siguiente->nombre) {
                temp = actual->nombre;
                actual->nombre = siguiente->nombre;
                siguiente->nombre = temp;
            }
            siguiente = siguiente->siguiente;
        }
 
        actual = actual->siguiente;
    }
}
 
// Función para guardar los nombres ordenados en un archivo
void guardarNombresEnArchivo(Nodo* lista, string nombreArchivo) {
    ofstream archivo(nombreArchivo);
 
    if (archivo.is_open()) {
        Nodo* actual = lista;
        while (actual != nullptr) {
            archivo << actual->nombre << endl;
            actual = actual->siguiente;
        }
        archivo.close();
        cout << "Los nombres se han guardado en el archivo exitosamente." << endl;
    } else {
        cout << "No se pudo abrir el archivo para guardar los nombres." << endl;
    }
}
 
int main() {
    string nombreArchivoEntrada = "nombres.txt";
    string nombreArchivoSalida = "nombres_ordenados.txt";
    Nodo* listaNombres = nullptr;
    string nombre;
 
    // Leer los nombres del archivo de entrada
    ifstream archivoEntrada(nombreArchivoEntrada);
    if (archivoEntrada.is_open()) {
        while (getline(archivoEntrada, nombre)) {
            insertarNombre(listaNombres, nombre);
        }
        archivoEntrada.close();
 
        // Ordenar los nombres
        ordenarNombres(listaNombres);
 
        // Guardar los nombres ordenados en el archivo de salida
        guardarNombresEnArchivo(listaNombres, nombreArchivoSalida);
    } else {
        cout << "No se pudo abrir el archivo de entrada." << endl;
    }
 
    return 0;
}

Este programa asume que tienes un archivo de texto llamado "nombres.txt" en el mismo directorio que el programa, que contiene los nombres que deseas ordenar. Los nombres ordenados se guardarán en un archivo llamado "nombres_ordenados.txt".

Espero que esta solución te sea útil. ¡Buena suerte con tu presentación!

Saludos,
Ale
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar