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

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

Восстановить пароль Регистрация
 
vetal0007
27 / 27 / 0
Регистрация: 11.02.2012
Сообщений: 299
10.06.2013, 21:47     Не работает программа - "Построить класс для работы с односвязным списком." #1
Построить класс для работы с односвязным списком. Элемент списка – действительное число. Сформировать список, содержащий неубывающую последовательность чисел, и преобразовать его так, чтобы последовательность была невозрастающей. Для этого необходимо совершить переворот списка, т. е. такую переустановку указателей в списке, при которой элементы его следуют друг за другом в обратном порядке.

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


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 минут
Все, разобрался.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 21:47     Не работает программа - "Построить класс для работы с односвязным списком."
Посмотрите здесь:

C++ Построить класс для работы с односвязным списком. Создать два списка: List1 и List2. Проверить, содержатся ли элементы списка List1 в списке List2 в у
C++ Разработать класс с набором функций для управления односвязным списком
C++ Построить класс для работы со списком
Построить класс для работы с односвязным списком C++
Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком C++
Построить класс для работы с односвязным списком C++
C++ Построить класс для работы с односвязным списком
Построить класс для работы со списком. Элемент списка содержит информацию о заявке на авиабилет C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru