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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2009, 11:14   #1
Zaya007
 
Аватар для Zaya007
 
Регистрация: 12.03.2009
Сообщений: 9
Восклицание Динамические структуры (линейный список). Си

здраствуйте люди добрые, и очень умные, у меня вот какая проблема:
дали задачу из учебника Павловской

Предметный указатель организован как линейный список.
Каждая компонента указателя содержит слово и номера страниц, на которых это
слово встречается. Количество номеров страниц, относящихся к одному слову, от
одного до десяти.
Составить программу, которая обеспечивает:
• начальное формирование предметного указателя;
• вывод предметного указателя;
• вывод номеров страниц для заданного слова.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.
, но у меня все никак не выходит, что-то написала, но работает не так как надо (к меню пока и не приступала, к поиску тоже, мне бы просто чтобы все формировалось нормально!!!).
Помогите кто чем может!
Код:
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

using namespace std;

struct dek_node

{
	int data;
	char word;
	dek_node *prev;
	dek_node *next;

};
dek_node *CreateDek(int Data,char Word);//создание элемента
void ExtractBegin(dek_node *dek);// вывод сначала
dek_node *PutBegin(dek_node *dek,int Data, char Word);//вставка в начало
dek_node *PutEnd(dek_node *dek,int Data, char Word);//вставка в конец
void ExtractEnd(dek_node *dek);//вывод с конца

int main()
{
    int i;
	int data;
	char slovo;
	cout << "Vvedite element deka = ";
	     cin>>data;
	     cin >>slovo;
	dek_node *dek = CreateDek(data, slovo);
	cout << "Dobavit v nachalo Deka = ";
                 cin >>data;
 	     cin >> slovo;
	dek = PutBegin(dek, data, slovo);
	cout << "Dobavit v konec Deka = ";
	     cin >>data;
	     cin >> slovo;
	dek = PutEnd(dek, data, slovo);
	cout << "\nDek s nachala: \n";
	ExtractBegin(dek);
	cout << "\n";
	cout << "Dek s konca: \n";
	ExtractEnd(dek);
	getch();
	return 0;
}
////////////////////////////////////////////////////////////////
dek_node *CreateDek(int Data,char Word)
{
    dek_node *dekNode = new dek_node;
    dekNode->data = Data; 
	dekNode->word = Word;
	dekNode->prev = NULL;
	dekNode->next = NULL;
	return dekNode;
}
/////////////////////////////////////////////////////////////////
dek_node *PutBegin(dek_node *dek,int Data, char Word)
{
	dek_node *dekNode = new dek_node;
	while (dek->prev != 0) dek = dek->prev;
	dekNode->data = Data;
	dekNode->word = Word;
	dekNode->prev = NULL;
	dekNode->next = dek;
	dek->prev = dekNode;
	return dekNode;
}
/////////////////////////////////////////////////////////////////
dek_node *PutEnd(dek_node *dek,int Data, char Word[aword])
{
	dek_node *dekNode = new dek_node;
	while (dek->next != 0) dek = dek->next;
	dekNode->data = Data;
	dekNode->word = Word;
	dekNode->prev = dek;
	dekNode->next = NULL;
	dek->next = dekNode;
	return dekNode;
}
/////////////////////////////////////////////////////////////////
void ExtractEnd(dek_node *dek)
{
	while (dek->next != 0) dek = dek->next;
	do
	{
		cout << dek->data << " "<<dek->word<<endl;
		dek = dek->prev;
	} 
    while(dek->prev != 0);
	cout << dek->data<<' '<<dek->word<<endl;
}
/////////////////////////////////////////////////////////////////
void ExtractBegin(dek_node *dek)
{
	while (dek->prev != 0) dek = dek->prev;
	do 
	{
		cout << dek->data << " "<<dek->word<<endl;
		dek = dek->next;
	} while(dek->next != 0);
	cout << dek->data << " "<<dek->word<<endl;
}
/////////////////////////////////////////////////////////////////
У меня пока 1 страница и 1 буква, с этим проблема
Zaya007 вне форума Ответить с цитированием
Старый 12.03.2009, 14:49   #2
androidvsu
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 39
По умолчанию

Привет! Я конечно, могу ошибаться, но для начала, по твоему условию, каждая компонента списка содержит слово и номера страниц, где это слово встречается. следовательно вместо
Код:
int data; // быть массив, т.е. int* date;//с динамическим выделением памяти перед использованием
Что значит начальное формирование списка?
androidvsu вне форума Ответить с цитированием
Старый 12.03.2009, 16:35   #3
Zaya007
 
Аватар для Zaya007
 
Регистрация: 12.03.2009
Сообщений: 9
По умолчанию

ты прав, исправлюсь
int *data;
сhar *word;
Zaya007 вне форума Ответить с цитированием
Старый 12.03.2009, 17:04   #4
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

не обязательно эти переменные делать динамическими
capta1n вне форума Ответить с цитированием
Старый 12.03.2009, 18:14   #5
Zaya007
 
Аватар для Zaya007
 
Регистрация: 12.03.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от androidvsu Посмотреть сообщение
Что значит начальное формирование списка?
Это значит начальное создание, ввод предметного указателя, с клавиатуры.
Zaya007 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кольцевой линейный список Seafulf Паскаль, Turbo Pascal, PascalABC.NET 7 16.11.2013 20:02
Линейный односвязный список Absinth Помощь студентам 4 11.11.2008 20:29
Линейный двунаправленный список Seg_62 Паскаль, Turbo Pascal, PascalABC.NET 4 28.08.2008 21:02
Линейный список Black_Ak24 Паскаль, Turbo Pascal, PascalABC.NET 2 04.01.2008 15:00