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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2012, 18:41   #1
Killspamers
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 14
По умолчанию Односвязные списки.

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

Построить линейный список из слов, хранящихся в текстовом файле (в каждой строке одно слово), Перед каждым узлом, содержащим слово “Паскаль”, вставить узел со словом “язык”.

Особенно интересует как из файла в каждый узел списка заталкивать по слову Заранее спасибо.
Killspamers вне форума Ответить с цитированием
Старый 15.03.2012, 19:43   #2
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Опять таки, на чем Вы эти списки реализуете... Может быть Вам стеки нужны - так это будет совсем другая тема в отличае от того, если бы речь шла об обычных строковых массивах......
Я могу Вам посоветовать обратиться к лекции по динамическому программированию (по крайней мере посмотреть сами схемы принципов добавления элементов) - но еще раз повторяюсь, там динамика (с выделением памяти), а Вы такого наверное еще не проходили...
Но все равно гляньте - возможно увидив рисунки у Вас появятся идеи...
http://www.intuit.ru/department/algo...data/29/1.html

Добавление слов в структуру:
посмотрите как при помощи потока ввода/вывода считывать целые слова из файла. Вот так аккуратненько при помощи функции и считайте слова в информационное поле.....там код-то 5-8 строчек: информационному полю присвоить значение слова.



Добавление узла:

у Вас в узле есть строковое поле (string) допустим word, где написано "Паскаль". Прошлись по списку - как только такое увидили, сразу запускаете функцию - вперед этой структуры добавить структуру с полем word равном "язык". Самое главное аккуратно пройтись по массиву узлов....
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 15.03.2012 в 20:03.
Blondy вне форума Ответить с цитированием
Старый 16.03.2012, 10:22   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
лекции по динамическому программированию
только умоляю - не путайте динамическое программирование с динамическими структурами данных. Это совсем разные вещи.
В данном случае, разумеется, речь идёт о динамических структурах (т.к. о динамическом выделении памяти).

со всем остальным согласен.

Killspamers,
1) вы не указали, на каком языке программирования пишете...
2) пройдитесь поиском - на форуме неоднократно решались подобные задачи
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2012, 12:07   #4
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

вообще самый простой вариант если делать "в лоб".

1) Считываете строку
2) Если она "Паскаль", добавляете узел "язык", следом "паскаль".
3) Иначе просто добавляете один узел со словом.

Т.к. язык вы не написали, соотвестветнно ничего конкретнее не могу предложить.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 16.03.2012, 13:24   #5
Killspamers
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 14
По умолчанию

извиняюсь язык С++
Killspamers вне форума Ответить с цитированием
Старый 17.03.2012, 22:01   #6
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Не знаю, актуально еще или нет, но вот.
Код:
#include <string>
#include <fstream>
#include <iostream>
#include <clocale>

using namespace std;

class List
{
private:
	struct Node
	{
		string data; //Сюда будем писать строку
		Node*  next; //Ссылка на сл. эл-т списка

		Node(string dat) // конструктор
		{
			data = dat;
			next = NULL;
		}
	};

	Node* beg; //начало списка
	Node* end; //конец списка

public:
	List() //конструктор
	{
		beg = NULL;
		end = NULL;
	}

	~List() //деструктор
	{
		if(beg != NULL)
		{
			Node* temp = beg;
			while(temp)
			{
				temp = temp->next;
				delete beg;
				beg = temp;
			}
		}
	}

	void Add(string dat) //добавление записи
	{
		Node* temp = new Node(dat);
		if(beg == NULL) beg = end = temp;
		else
		{
			end->next = temp;
			end = temp;
		}
	}
	
	void Print()  //вывод на печать
	{
		if(beg != NULL)
		{
			Node* temp = beg;
			cout << endl << "Your List:" << endl;
			while(temp)
			{
				cout << temp ->data << endl;
				temp = temp -> next;
			}
			cout << endl;
		}
	}

};

int main()
{
	List L;
	string str;
	ifstream fin("test.txt");
	
	setlocale(LC_ALL,"Rus");

	while(!fin.eof())
	{
		fin >> str;
		if(str.compare("Паскаль") == 0)
		{
			L.Add("Язык");
			L.Add(str);
		}
		else
		{
			L.Add(str);
		}
	}

	L.Print();


}
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 19.03.2012, 17:28   #7
Killspamers
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 14
По умолчанию

Уже не совсем актуально, но спасибо огромное!) (поставьте плюс кто-нибудь, а то я не могу что то)
Killspamers вне форума Ответить с цитированием
Старый 19.03.2012, 18:59   #8
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Сережа, Вы правы абсолютно, я -то думала о динамических структорух данных, а написала неправильно..плохо у меня еще с терминологией)))))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Односвязные списки Nike0 Общие вопросы C/C++ 0 26.12.2010 12:07
Односвязные списки Anna T Паскаль, Turbo Pascal, PascalABC.NET 2 19.12.2010 18:58
ЯЗЫК СИ.ОДНОСВЯЗНЫЕ СПИСКИ. Даша Киска Помощь студентам 0 09.12.2010 20:18
Односвязные списки art_stalker Общие вопросы C/C++ 5 21.04.2010 22:49