Форум программистов, компьютерный форум CyberForum.ru

Линейный список - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ CSR метод хранения разреженных матриц http://www.cyberforum.ru/cpp-beginners/thread253167.html
Нужна ваша помощь. Необходимо реализовать CSR метод хранения симметричных разреженных матриц Матрица считывается из файла matr, который выглядит следующим образом 7 9.0 0.0 0.0 3.0 1.0 0.0 1.0 0.0 11.0 2.0 1.0 0.0 0.0 2.0 0.0 2.0 10.0 2.0 0.0 0.0 0.0 3.0 1.0 2.0 9.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 12.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 8.0 0.0 1.0 2.0 0.0 0.0 1.0 0.0 8.0
C++ обьясните функцию простым языком :) Обьясните плиз, почему в main() возможна такая d3 = 10.0 + d1; операция? Тоесть на первом месте стоит 10.0 потом обьект. Я понял что это делает друж-ная функция, но хотелось бы узнать как это она делает? Семантику можно? class Distance //Класс английских расстояний { private: int feet; float inches; public: Distance() //конструктор без... http://www.cyberforum.ru/cpp-beginners/thread253159.html
строки C++
помогите пожалуйста с задачами: 1.после каждого заданного слова в сообщении поставить восклицательный знак. 2.дан текст, представляющий собой десятичную запись целого числа. вычислить сумму цифр этого числа.
сортировка char по f C++
помогите плиз: Есть массив m на n содержавший слова нужно отсортировать содержание по символу F
C++ Методом Ньютона решить линейное уравнение http://www.cyberforum.ru/cpp-beginners/thread253133.html
Всем привет и хорошего настроения! Решаю вычмат. Методом Ньютона надо решить линейное уравненьице. Сам метод запроган. Хочу запрогать процесс нахождения начального приближения x0. Мои рассуждения: с помощью графика определяю границы промежутка, где сидят все корни уравнения. Далее иду с шагом step=0.1 от левого конца этого промежутка, пока не встречу такое х0, что f(x0)*fdx(x0)<=0, где fdx -...
C++ Нужно написать небольшую програмку на С++ Привет! Помогите написать прогрумму небольшую на С++. Мне очень нужно для ООП. Заранее спасибо =) подробнее

Показать сообщение отдельно
Dremuk
Сообщений: n/a
06.03.2011, 20:37     Линейный список
Здравствуйте. Недавно начал изучать C++. Не могу разобраться. По учебе нужно решить такую задачу.
Создать шаблон класса «однонаправленный линейный список указателей». Использовать данный шаблон для организации предметного указателя».
Каждая компонента указателя содержит слово и номера страниц, на которых это слово встречается. Количество номеров страниц, относящихся к одному слову, от одного до десяти.
Составить программу, которая обеспечивает:
начальное формирование предметного указателя;
вывод предметного указателя;
вывод номеров страниц для заданного слова.

Написал такую программу. Но с ней какие-то проблемы. При добавлении слова, старые становятся идентичными только что введенному новому слову. Да и поиск не работает правильно.
Подскажите в чем проблема? Пишу на Turbo C++.

#include <iostream.h>
#include <stdio.h>
#include <conio.h>

template <class T> class list
{
private:
class node // Класс node содержит данные списка
{
friend class list<T>;
private:
node *next; // Указатель на следующий элемент в списке
T val; // Данные списка
node(): next(NULL){}
node(T data): next(NULL), val(data){}
~node(){}
};
node *head; // Указатель на начало списка
int count; // Количество элементов в списке
public:
list(): head(NULL), count(0){}
~list()
{
clear(); // Освобождение занятой памяти
}
int getCount() // Возвращает количество элементов в списке
{
return count;
}
int add(T data) // Добавление элемента в конец списка
// Возвращает количество элементов в списке
{
node *to_add = new node(data);
if (head==NULL) // Если в списке нет элементов
head=to_add;
else
{
node *current;
for (current=head; current->next!=0; current=current->next);
current->next=to_add;
}
count++;
return count;
}
int del(int x) // Удаление элемента из списка.
// Возвращает количество элементов в списке или -1 при ошибке
{
if (x>count) return -1;
node *to_del=head;
if (x==1) // Если нужно удалить первый элемент
{
head=head->next;
delete to_del;
}
else
{
node *current=head;
for (int i=1; i<x-1; i++) current=current->next;
to_del=current->next;
current->next=current->next->next;
delete to_del;
}
count--;
return count;
}
void clear() // Очистка списка
{
node *current = head;
node *to_del = head;
while (to_del!=NULL)
{
current=current->next;
delete to_del;
to_del=current;
}
head=NULL;
count=0;
}
T getData(int x) // Возвращает данные из списка
{
node *current;
for (current=head; x>1; x--) current=current->next;
return current->val;
}
};

struct ukazatel
{
char *slovo;
char *stran;
};

list<ukazatel> my_list;

void print()
{
clrscr;
for (int i=1; i<=my_list.getCount(); i++)
cout << my_list.getData(i).slovo << " " << my_list.getData(i).stran << endl;
while (!kbhit()) {;}
}

void find()
{
clrscr;
char *slovo;
cout << "Vvedite slovo: "; gets(slovo);
for (int i=1; i<=my_list.getCount(); i++)
if (my_list.getData(i).slovo == slovo)
cout << my_list.getData(i).stran << endl;
while (!kbhit()) {;}
}

void add()
{
char* slovo;
char* stran;
ukazatel *my = new ukazatel;
cout << "Slovo: "; gets(slovo);
cout << "Stranicy: "; gets(stran);
my->slovo=slovo;
my->stran=stran;
my_list.add(*my);
}

int main()
{
int choice = 0;
while (choice!=5)
{
clrscr();
cout << "1. Add word" << endl;
cout << "2. Print list" << endl;
cout << "3. Clear" << endl;
cout << "4. Find word" << endl;
cout << "5. Exit" << endl;
cin >> choice;
switch (choice)
{
case 1: add(); break;
case 2: print(); break;
case 3: my_list.clear(); break;
case 4: find(); break;
}
}
return 0;
}


Подскажите, пожалуйста. В среду сдавать - а вот никак она что-то не дается. Пока не набрался еще много знаний по C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru