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

Создание двухсвязного списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Напишите функцию, которая для любого целого аргумента возвращает целое значение, полученное изменением порядка следования цифр на обратный http://www.cyberforum.ru/cpp-beginners/thread891727.html
2)Напишите функцию, которая для любого целого аргумента возвращает целое значение, полученное изменением порядка следования цифр на обратный.
C++ Максимальный средний балл Доброго времени суток! Пишу прогу на С++,по условию необходимо вывести на экран список людей с максимальным средним баллом,большим 4. Вся база считывается с файла(txt). Структура базы такая: Фамилия Имя оценка1 оценка2 оценка3 Объясните,пожалуйста,как правильно посчитать это? http://www.cyberforum.ru/cpp-beginners/thread891714.html
C++ Перевод числа из семеричной системы счисления в одиннадцатеричную
Перевод числа из семеричной системы счисления в одиннадцатеричную. (если можно то не в консоли, а в "роботе с формами")
C++ Функции для перевода чисел из девятичной системы в десятичную
Надо на С++ Кто какие функции знает?
C++ Написать подпрограмму, которая определяет, делится ли число на «3» без остатка http://www.cyberforum.ru/cpp-beginners/thread891702.html
1)Написать подпрограмму, которая определяет, делится ли число на «3» без остатка, не используя деления и определения остатка от деления. Проверку осуществлять на числах более 1 млн.
C++ Увеличение памяти для массивов В процессе отладки программы появилась необходимость увеличить массивы, объявленные ниже, на 4 элемента. Можно ли это сделать в первом и во втором случаях, не изменяя константу 10? int *mas1=new int; // 1 vector <int> mas2(10); //2 3. Если работа с массивами, объявленными выше, заканчивается, то в каком случае обязательно использование оператора delete? подробнее

Показать сообщение отдельно
andrew1ee
1 / 1 / 0
Регистрация: 05.06.2013
Сообщений: 25

Создание двухсвязного списка - C++

05.06.2013, 11:19. Просмотров 1303. Ответов 16
Метки (Все метки)

Есть задание:
Реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех типов: "целое число", "вещественное число", "строка". В разных узлах одного списка может быть любой объект одного из допустимых типов. Каждый объект должен иметь возможность вывести свое содержимое на консоль. У списка должен быть метод, выводящий все элементы.
Класс списка реализовать с "нуля" (не используя темплейты, std::list или аналоги) При реализации класса "строка" можно использовать std::string.

Есть код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdlib.h>
#include <iostream.h>
 
struct Node       //Структура являющаяся звеном списка
 {
     int x;     //Значение x будет передаваться в список
     Node *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   //Создаем тип данных Список
 {
     Node *Head,*Tail; //Указатели на адреса начала списка и его конца
 public:
     List():Head(NULL),Tail(NULL){}; //Инициализируем адреса как пустые
     ~List(); //Деструктор
     void Show(); //Функция отображения списка на экране
     void Add(int x); //Функция добавления элементов в список
 };
 
List::~List() //Деструктор
 {   
     while (Head) //Пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; //Резервная копия адреса следующего звена списка
         delete Head; //Очистка памяти от первого звена
         Head=Tail; //Смена адреса начала на адрес следующего элемента
     }
 }
 
 void List::Add(int x)
 {
   Node *temp=new Node; //Выделение памяти под новый элемент структуры
   temp->Next=NULL;  //Указываем, что изначально по следующему адресу пусто
   temp->x=x;//Записываем значение в структуру
 
   if (Head!=NULL) //Если список не пуст
   {
       temp->Prev=Tail; //Указываем адрес на предыдущий элемент в соотв. поле
       Tail->Next=temp; //Указываем адрес следующего за хвостом элемента
       Tail=temp; //Меняем адрес хвоста
   }
   else //Если список пустой
   {
       temp->Prev=NULL; //Предыдущий элемент указывает в пустоту
       Head=Tail=temp; //Голова=Хвост=тот элемент, что сейчас добавили
   }
 }
 
 void List::Show()
 {
 
     Node *temp=Head; //Временно указываем на адрес первого элемента
      while (temp!=NULL) //Пока не встретим пустое значение
     {
     cout<<temp->x<<" "; //Выводим каждое считанное значение на экран
     temp=temp->Next; //Смена адреса на адрес следующего элемента
     }
     cout<<"\n";
 }
 
int main ()
{
 system("CLS");
 List lst; //Объявляем переменную, тип которой есть список
 lst.Add(100); //Добавляем в список элементы
 lst.Add(200);
 lst.Add(900);
 lst.Add(888);
 
 lst.Show(); //Отображаем список на экране
  system("PAUSE");
}
Как в эту программу добавить тип данных double и string, не используя стандартные библиотеки вроде tuple или что-то подобное?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru