Собственно проблема вот в чём. Не получается сохранить целостность структуры после считывания её(структуры) с файла(.тхт). Списки здесь типа "очередь" (FIFO) . Вот код:
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
| #include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
using namespace std;
struct node
{
int value; //информационное поле
node *next; //указатель на следующий елемент
};
class Spisok
{
node *no; //начало списка
node *ko; //конец списка
int temp;
public:
Spisok(){no=NULL;ko=NULL;}
void Post(); //построение списка
void Show(); //вывод списка на екран
void Add(); //добавление записи в списки
void Delete(); //удаление записи
void Read(); //чтение с фала(и вывод прочитанного на экран)
void Write(); //запись в файл
};
void Spisok::Post()
{
cout<<"Ghelaete zapolnit` zapis`('y')?"<<endl;
char sw;
cin>>sw;
if(sw=='y')
{
node *r=new node;
no=r;
ko=r;
cout<<"Wedite znachenia"<<endl;
cin>>r->value;
r->next=NULL;
cout<<"Dobavit` eshe zapis?('y')"<<endl;
cin>>sw;
while(sw=='y')
{
r=new node;
r->next=NULL;
cout<<"wedite chislo"<<endl;
cin>>r->value;
ko->next=r;
ko=r;
cout<<"Dobavit` eshe zapis?('y')"<<endl;
cin>>sw;
}
}
}
void Spisok::Show()
{
node *r=no;
while(r!=NULL)
{
cout<<r->value<<endl;
r=r->next;
}
}
void Spisok::Add()
{
node *q=new node;
cout<<"wedite chislo!"<<endl;
cin>>q->value;
q->next=NULL;
if(no!=NULL)
{
ko->next=q;
ko=q;
}
else
{
no=q;
ko=q;
}
}
void Spisok::Delete()
{
node *r=no;
if(no!=NULL)
{
temp=no->value;
no=no->next;
delete r;
}
}
void Spisok::Ochistka()
{
node *q=no;
if(no!=NULL)
{
while(no!=ko)
{
no=q->next;
delete q;
q=no;
}
delete no;
ko=NULL;
no=NULL;
}
}
void Spisok::Write()
{
node *t=no;
ofstream fout("file1.txt",ios::trunc);
while(t!=NULL)
{
fout.write((char*)&t->value,sizeof(node));
t=t->next;
}
fout.close();
}
void Spisok::Read()
{
node *t=no;
ifstream fin("file1.txt");
while(t!=NULL)
{
fin.read((char*)&t->value,sizeof(node));
cout<<t->value<<" ";
t=t->next;
}
fin.close();
}
void main()
{
Spisok ob;
int n;
cout<<"Read info from file - (1)"<<endl;
cout<<"Write info into the file - (2)"<<endl;
cin>>n;
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
switch(n)
{
case 1:cout<<"read :"<<endl;ob.Read();break;
case 2:{ cout<<"Postroenie :"<<endl;
ob.Post();cout<<"Vuvod 1 :"<<endl;
ob.Show();cout<<"Dobavlenie :"<<endl;
ob.Add();cout<<"Write :"<<endl;ob.Write()
;}
}
} |
|
Чем можете помогите, буду очень признателен!