0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 16
1

Линейный односвязный (однонаправленный) список, запись и чтение из файла

26.06.2017, 03:07. Показов 2066. Ответов 1
Метки нет (Все метки)

нужна помощь в организации чтения и записи списка из файла,
C++
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
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
struct TNode
{
    string data;
    TNode* next;
};
 
struct TList
{
    TNode* first;
    TNode* last;
};
 
//----------------------------------------------//
TList& Push(TList& list, const string& text)
{
    TNode* node = new TNode;
    node->data = text;
    node->next = NULL;
 
    if (list.last == NULL)
    {
        list.first = list.last = node;
    }
    else
    {
        list.last->next = node;
        list.last = node;
    }
 
    return list;
}
//----------------------------------------------//
string GetRandomWord(size_t length)
{
    static const string CAlphabet = "abcdefghijklmnopqrstuwvxyz";
    //static const string CAlphabet = "0123456789";
 
    string word;
 
    while (length--)
    {
        word += CAlphabet[rand() % CAlphabet.size()];
    }
 
    return word;
}
//----------------------------------------------//
ostream& operator << (ostream& os, const TList& list)
{
    TNode* node = list.first;
 
    os << "[";
    for (; node && (node != list.last->next); node = node->next)
    {
        os << node->data;
 
        if (node != list.last)
        {
            os << ", ";
        }
    }
    os << "]";
 
    return os;
}
//----------------------------------------------//
TList& Sort(TList& list)
{
    TList result = { list.first, list.first };
    list.first = list.first->next;
 
    while (list.first)
    {
        TNode* node = list.first;
        list.first = list.first->next;
 
        if (node->data < result.first->data)
        {
            node->next = result.first;
            result.first = node;
        }
        else
        {
            TNode* cursor = result.first;
            for (; cursor != result.last &&
                (cursor->next->data < node->data)
                ; cursor = cursor->next) {
                ;
            }
 
            node->next = cursor->next;
            cursor->next = node;
 
            if (cursor == result.last)
            {
                result.last = node;
            }
        }
    }
    result.last->next = NULL;
 
    list = result;
 
    return list;
}
//----------------------------------------------//
 
int main()
{
    srand(time(NULL));
 
    TList list = { NULL, NULL };
 
    for (size_t i = 0; i < 8; ++i)
    {
        Push(list, GetRandomWord(6));
    }
 
    cout << "source: " << list << endl;
    cout << "sorted: " << Sort(list) << endl;
 
    system("pause");
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2017, 03:07
Ответы с готовыми решениями:

Запись действительных чисел из файла в линейный однонаправленный список
помогите написать код на запись действительных чисел из файла в линейный однонаправленный список

Линейный односвязный список - выводится только одна запись
Выводит только одну запись, в чем ошибка.. struct Node1 { string Region; int Temperature;...

Считать числа из файла в линейный однонаправленный список
С++ Дан файл с цифрами. Надо занести их в линейный однонаправленный список и после макс элемента...

Считать из файла информацию и записать её в односвязный линейный список
Как считать из файла информацию и записать её в односвязный линейный список?

1
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
26.06.2017, 07:00 2
C++
1
2
3
4
5
6
7
8
ofstream ofs("data.txt");
 
TNode *n = list.first;
while (n)
{
    ofs << data << endl;
    n = n->next;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2017, 07:00
Помогаю со студенческими работами здесь

Составить линейный односвязный список неповторяющихся слов из файла
Написать программу, составляющую по символьному файлу линейный упорядоченный список неповторяющихся...

Чтение из бинарного файла в линейный динамический список
У меня есть бинарный файл,который содержит массив структур.Нужно на основании этого файла создать...

Запись элементов файла в односвязный список
дан файл целых чисел. записать все его элементы в односвязный список!!!

Однонаправленный (односвязный) список
Используется ли в данной программе однонаправленный (односвязный) список? #include &lt;Windows.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru