Я действительно новичок в этом и сейчас изучаю односвязные списки. Я пишу код, но я действительно в замешательстве. Я пытаюсь написать метод чтения и метод записи. У меня есть тестовый жгут, который я не могу изменить. Я просто хочу иметь возможность читать поток и выводить поток, чтобы он не возвращался с адресами памяти.
Может кто-нибудь объяснить действительно простым способом, пожалуйста, и помогите мне исправить этот код?
void SLLIntStorage::Read(istream& r)
{
char c[13];
r >> c;
r >> NumberOfInts;
Node *node = new Node;
head = node; //start of linked list
for(int i = 0; i < NumberOfInts; i++) //this reads from the file and works
{
r >> node->data;
cout << node->data << endl;
node ->next = new Node; //creates a new node
node = node->next;
}
}
void SLLIntStorage::Write(ostream& w)
{
Node *node = new Node;
head = node;
for(int i = 0; i < NumberOfInts; i++)
{
w << node->data << endl;
//cout << i << endl;
}
}
и в заголовочном файле
#pragma once
#include <iostream>
using namespace std;
struct Node
{
int data; //data in current node
Node *next; //link of address to next node
};
class SLLIntStorage
{
private:
Node *head;// start of linked list
//Node *tail;
Node current; //current node
public:
void setReadSort(bool);
void sortOwn();
void Read(istream&);
void Write(ostream&);
void add(int i);
void del();
bool _setRead;
int NumberOfInts;
SLLIntStorage(void);
~SLLIntStorage(void);
};
inline ostream& operator<< (ostream& out, SLLIntStorage& n)
{
n.Write(out);
return out;
}
inline istream& operator>> (istream& in, SLLIntStorage& s)
{
s.Read(in);
return in;
}
спасибо!