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

Не работает программа - "Построить класс для работы с односвязным списком." - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ ООП локальные переменные http://www.cyberforum.ru/cpp-beginners/thread897819.html
Есть розмерность для матрицы n i m, если я ввожу их в функции create, то уже функция print их не видит.я понимаю что они локальные, как же сделать чтоб они были видны во всех функциях? #include...
C++ Преобразование матрицы до верхнетреугольной и нижнетреугольной методом Гаусса Привет! Нужна помощь в преобразовании матрицы до нижнетреугольной методом Гаусса. Преобразование до верхнетреугольной вышло, со вторым проблемы. Прошу помочь. Код преобразования до верхнетреугольной... http://www.cyberforum.ru/cpp-beginners/thread897812.html
Идентификаторы списка в качестве аргументов функции C++
Хочу организовать поиск по списку с помощью функции, в которую бы передавались: поле, по которому искать (собсно какая-то переменная из списка) и значение, которое искать. Никак не могу понять, как...
C++ Из текста выбрать числа и записать в массив
Из текста выбрать числа и записать в массив. Предполагается, что количество встречающихся чисел не более 10.
C++ Строки, нужно подправить код http://www.cyberforum.ru/cpp-beginners/thread897799.html
Есть задание : Из заданной последовательности слов удалить слова, содержащие числа. и я написал данный код: Код: #include <iostream> #include <list> #include <string>
C++ Неправильный рандом Здравствуйте. Программа должна заполнять массив случайными, не повторяющимися элементами. Однако не смотря на то что максимальное значение случайных элементов было задано 50, массив заполняется... подробнее

Показать сообщение отдельно
vetal0007
29 / 29 / 1
Регистрация: 11.02.2012
Сообщений: 339

Не работает программа - "Построить класс для работы с односвязным списком." - C++

10.06.2013, 21:47. Просмотров 414. Ответов 0
Метки (Все метки)

Построить класс для работы с односвязным списком. Элемент списка – действительное число. Сформировать список, содержащий неубывающую последовательность чисел, и преобразовать его так, чтобы последовательность была невозрастающей. Для этого необходимо совершить переворот списка, т. е. такую переустановку указателей в списке, при которой элементы его следуют друг за другом в обратном порядке.

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


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
#include <iostream>
#include <ctime>
#include <vector>
using namespace std;
 
class OdnSP {
protected:
    struct TNode
    {
        float value;
        TNode* next;
    };
    TNode* list;
public:
    OdnSP():list(NULL){}
    ~OdnSP()
    {
        Clear();
    }
void Push(float theValue)
{
    TNode* node = new TNode;
    node->value=theValue;
    node->next=list;
    list=node;
};
bool IsEmpty() const
{
    return (list==NULL);
}
float Top() const
{
    return list->value;
}
float Pop()
{
    float value=list->value;
    TNode* node=list;
    list=list->next;
    delete node;
    return value;
}
void Clear()
{
    while(!IsEmpty())
    {
        Pop();
    }
}
friend std::ostream& operator<<(ostream& theOS,const OdnSP&theList)
{
    OdnSP::TNode* node=theList.list;;
    while(node)
    {
        theOS<<node->value<<" ";
        node=node->next;
    }
    return theOS;
}
friend class TOperation;
};
 
class TOperation
{
protected:
    static void Swap(float& theA,float& theB)
    {
        float buff=theA;
        theA=theB;
        theB=buff;
    }
public:
    static void AppendRandom(OdnSP& list, unsigned count)
    {
        ::srand(::time(NULL));
        while (count--)
        {
            list.Push(::rand()%90+10);
        }
    }
    //static void Reverse(OdnSP::TNode*& list)
    //{
    //  OdnSP::TNode* first;
    //  OdnSP::TNode* rest;
    //  if (list==NULL) return;
    //  first=list;
    //  rest=first->next;
    //  if (rest==NULL) return;
    //  Reverse(rest);
    //  first->next->next=first;
    //  first->next=NULL;
    //  list=rest;
    //}
    };
float main()
{
    setlocale(LC_CTYPE,"rus");
    OdnSP list;
    cout<<"Реверс:"<<endl;
    TOperation::AppendRandom(list,20);
    cout<<"Односвязный список: "<<list<<std::endl;
    TOperation::Reverse(list);
    cout<<"Реверс: "<<list<<endl;
    cout<<endl;
    system("pause");
    return 0;
}
Работает все кроме Реверса

Добавлено через 17 минут
Все, разобрался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru