Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2019, 20:24   #1
Tier_Mia
Пользователь
 
Регистрация: 13.10.2019
Сообщений: 14
По умолчанию Односвязный список

Добрый день, в функции Show я считываю из файл ОЛС, который был записан в функции Add. В функции check просто узнаю размер этого ОЛС. Но дальше мне надо повторно вывести ОЛС, но выводятся почему-то только последний элемент Count-раз
Код:
#include <conio.h>
#include <iostream>
#include<fstream>
using namespace std;
typedef double TE;
struct element                      //Структура с инфополями и адресным полем
{
	TE x;                             //Инфополе. значения из x будут передаваться в список
	element* Next;                     //Адресное поле
};

struct List {
	element* Head;                     //Указатель на последний активный элемент или просто голова списка
public:
	List() { Head = NULL; }             //Конструктор и инициализация указателя пустым значением                        //Прототип деструктора. Сам деструктор вынесен за класс
	void Add(TE x, int N);                   //Прототип функции добавления значений в список
	void Show(TE& x);                       //Прототип функцииотображения списка на экране	
	void check(int& count);
	
};

void List::Add(TE x, int N)               //Функция добавления элементов в список
{

	cout << "Write the name of your file " << endl;
	string path;
	cin >> path;
	fstream file;
	file.open(path, fstream::in | fstream::out | fstream::app);
	List lst;                     //Переменная, тип которой список
	cout << "N = ";
	cin >> N;
	for (int i = 0; i < N; i++)
	{
		element* temp = new element;       //При каждом вызове выделяется память
		temp->x = x;                        //Записываем x в элемент структуры  element (в x структуры element)                //Указываем, что след. элемент это объект по адресу Head
		Head = temp;
		cout << i + 1 << ". x = ";
		cin >> x;
		file << x;
		file << " ";
	}
	file.clear();
	file.seekg(0, ios_base::beg);
}


void List::check(int& count)
{
	cout << "Write the name of your file " << endl;
	string path;
	cin >> path;
	fstream file;
	file.open(path, fstream::in | fstream::out | fstream::app);
	file.clear();
	file.seekg(0, ios_base::beg);
	List lst;                     //Переменная, тип которой список
	element* temp = Head;
	int num;
	count = -1;
	while (!file.eof())
	{
		file >> num;
		count++;;
	}
	if (count == 0)
	{
		cout << " your linked list have no numbers " << endl;
	}
	else if (count > 0)
	{
		cout << "The amount of numbers in the linked list is " << count << endl;
	}

}
void List::Show(TE& x)                   //Функция отображения списка на экране
{
	cout << "Write the name of your file " << endl;
	string path;
	cin >> path;
	fstream file;
	file.open(path, fstream::in | fstream::out | fstream::app);
	file.clear();
	file.seekg(0, ios_base::beg);
	List lst;                     //Переменная, тип которой список
	int num;
	int count = -1;
	while (!file.eof())
	{
		file >> num;
		count++;;
	}
	if (count == 0)
	{
		cout << " your linked list have no numbers " << endl;


	}
	else if (count > 0)
	{
		cout << "your linked list: ";
		file.clear();
		file.seekg(0, ios_base::beg);
		element* temp = new element;
		for (int i = 0; i < count; i++)
		{

			file >> x;
			temp->x = x;
			cout << temp->x << " ";
		}

		
		
		for (int i = 0; i < count; i++)
		{
			element* temp2 = new element;
			temp2->x = x;
			cout << temp2->x << " ";
			temp2 = temp2->Next;
		}
		
		
	}
	
	
}
int main()
{
	cout << "Write 1 to write your linked list " << endl;
	cout << "Write 2 to see your linked list  " << endl;
	cout << "write 3 to check the amount of elements in your linked list " << endl;
	
	TE x = 0;
	int b = 0;
	cin >> b;
	int N = 0;
	List lst;
	if (b == 1)
	{
		lst.Add(x, N);
	}

	else if (b == 2)
	{
		lst.Show(x);
	}
	else if (b == 3)
	{
		int count = -1;
		lst.check(count);

	
	return main();
}
Tier_Mia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часть кода сделал. Односвязный список без заглавного звена. Динамическая память. Перевернуть список и считать в обратном порядке. Varner Общие вопросы Delphi 5 19.05.2016 17:30
Создать односвязный список и вывести его на экран. Из этого списка создать новый список по указанному ниже правилу и новый список San111 Паскаль, Turbo Pascal, PascalABC.NET 1 15.05.2012 22:08
Односвязный список mazzahaker Помощь студентам 0 08.04.2012 21:44
Необходимо реализовать классы, односвязный список для хранения целых чисел, односвязный список для хранен lineico Помощь студентам 2 09.05.2011 17:45
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52