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

Двусвязный список с объектом трех типов: "целое число", "вещественное число", "строка" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить заданную строку и столбец матрицы со сдвигом http://www.cyberforum.ru/cpp-beginners/thread822631.html
Как удалить заданную строку a и столбец b со сдвигом, в динамическом массиве MxN заполненного рандомными числами?
C++ Графика на C++ Помогите. Срочно нужно сделать задание, а графику даже еще не учили. Сделать нужно на Visual Studio. В файле задано равнобедренные треугольники с помощью двух вершин, определяющих основу каждого из треугольников, и суммарной длины двух других сторон. Вывести треугольники на экран. Отдельным цветом выделить треугольник который имеет площадь, близкую к величине, заданной в другом файле, и не... http://www.cyberforum.ru/cpp-beginners/thread822629.html
C++ Не работает русский язык
У меня такая проблема: Пользуюсь компилятором Visual C++ 6.0. После написания кода нажимаю build и Execute. Но почему-то в результате в полях вывода (cout << ) символы кириллицей превращаются в какие-то иероглифы и приодится писать транслитом. Кто знает, как это исправить?
SDL - помогите найти ошибку в коде C++
Ребят, начал изучать SDL. Такая параша #include <SDL.h> int main () { SDL_Init (SDL_INIT_VIDEO | |SDL_INIT_VIDEO); if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) { printf("Unable to init SDL: %s\n", SDL_GetError());
C++ Создать библиотечный каталог n порядка, ввести данные http://www.cyberforum.ru/cpp-beginners/thread822608.html
Задача: Создать библиотечный каталог n порядка, ввести данные: название книги, автор, год издания, цена, вывод: общая цена, порядок каталога, книги, стоимостью больше 100. Проблемы: класс задан в виде массива n порядка, не понятно, где присобачить: *sum+=*cost;//для суммирования стоимости на i-ом шаге if(*cost>=100) return *title; //для возврата имени книг, которые дороже 100 ...
C++ Перегрузка операторной функции и функции ! 3.16Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Класс должен содержать основной конструктор и конструктор копирования. Перегрузить в этом классе операторные функции, которые обеспечивают ввод/вывод элементов класса, а также операторную функцию присваивания. Дополнительно перегрузить операторную... подробнее

Показать сообщение отдельно
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
30.03.2013, 01:42     Двусвязный список с объектом трех типов: "целое число", "вещественное число", "строка"
Есть проблема. Реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех типов: "целое число", "вещественное число", "строка". В разных узлах одного списка может быть любой объект одного из допустимых типов.

Подскажите как подобное реализуется?

Сам список реализован только с одним из значений(в данном примере int data)
MyList.h
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
class MyList
{
private:
//    union data {
//        int whole;
//        double real;
//        string str;
//        };
 
    int count;
 
    struct node {
        int data;
        node * next;
        node * prev;
        node(int d,node * f,node * p) : data(d),next(f),prev(p) {}
        };
 
public :
    node * end;
    node * first;
public:
    void pushFirst(int val);
    void pushEnd(int val);
    int selectNode(int val);
    void clearList();
    bool deleteNode(int val);
 
    void printList();
    int getCount();
 
 
public:
    MyList() : count(0),end(NULL),first(NULL) {}
   ~MyList();
};
MyList.cpp
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
MyList::~MyList(){
    while (first)
         {
              node *ptr = first;
              first = ptr->next;
              delete ptr;
         }
         end = first;
}
 
void MyList::pushFirst(int val){
    first=new node(val,first,NULL);
    if(!count)
            end = first;
       node *ptr = first->next;
       if(ptr)
            ptr->prev = first;
 
       count++;
}
 
void MyList::pushEnd(int val){
end = new node(val, NULL, end);
 
   if (!count)
      first = end;
 
   node *ptmp = end->prev;
   if (ptmp)
      ptmp->next = end;
 
   count++;
}
 
void MyList::printList(){
    node * ptmp=first;
    int a=1;
    while(ptmp){
        std::cout<<"Узел № "<<a<<" Данные: "<<ptmp->data<<" "<<std::endl;
        ptmp=ptmp->next;
        a++;
    }
    std::cout<<std::endl;
 
}
 
int MyList::getCount(){
  return count;
}
 
void MyList::clearList(){
    while (first)
         {
              node *ptr = first;
              first = ptr->next;
              delete ptr;
         }
         end = first;
 
         count = 0;
}
 
 
int MyList::selectNode(int val){
    if(!count || !val || val>count+1)
            return 0;
 
       int tmp=0;
 
       node *ptmp = first;
 
       while (ptmp)
       {
            tmp++;
            if (val==tmp)
                 return ptmp->data;
            ptmp = ptmp->next;
       }
}
 
bool MyList::deleteNode(int val){
    if(!count || !val || val>count+1)
             return false;
 
        int tmp=0;
 
        node *ptmp = first;
 
        while (ptmp)
        {
             tmp++;
             if (val==tmp) {
                  node *ptr_prev = ptmp->prev;
                  node *ptr_next = ptmp->next;
 
                  if(ptr_prev)
                       ptr_prev->next = ptr_next;
                  if(ptr_next)
                       ptr_next->prev = ptr_prev;
 
                  delete ptmp;
 
                  count--;
                  return true;
             }
             ptmp = ptmp->next;
        }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru