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

разобраться с очередью - C++

Восстановить пароль Регистрация
 
proech
10 / 10 / 2
Регистрация: 10.07.2013
Сообщений: 150
17.11.2013, 20:48     разобраться с очередью #1
не работает operator+ и оператор--
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
109
110
111
112
113
114
115
116
117
118
119
// ConsoleApplication85.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <cstdio>
#include <iostream>
#include <conio.h>
#include <locale>
 
typedef struct listItem
{   
    int Data;
    listItem* sled;
}
QueueElement;
class Queue
{
private:
    QueueElement* Start;
    QueueElement* End;
    unsigned int CountQueue;
    void AddTolist(QueueElement *&Start,QueueElement *&End,QueueElement *Temp)
    {
    
        if (Start)
        {
        End->sled = Temp;
        End = Temp;
        }
        else 
        {
          Start = End = Temp;
        };
    
    }
public:
//по Умолчанию
    friend std::ostream &operator<<(std::ostream &Stream,const Queue &q)
    {
        QueueElement *tmp= q.Start;
        while(tmp)
        {
        
        Stream<<tmp->Data<<" "<<std::endl;
        
        tmp = tmp->sled;
        }
        return Stream;
    }
    Queue():CountQueue(5)
    {
        std::cout<<"количество элементов"<<std::endl;
        std::cin>>CountQueue;
     Start = End = NULL;
     QueueElement* temp;
 
     
    for (int i=0;i<CountQueue;i++)
    {
     temp = new QueueElement;
    std::cin>>temp->Data;
    temp->sled = NULL;
    AddTolist(Start,End,temp);
    }
 
    
    }
    ~Queue()
    {QueueElement *tmp = this->Start;
        while(Start)
        { tmp = Start;
        Start = Start->sled;
        delete tmp;
         
        }
    
    }
    Queue &operator+(int Number)
    { 
        std::cout<<" добавили элемент "<<Number<<std::endl;
    QueueElement* tmp =new QueueElement;
    tmp->Data = Number;
    tmp->sled = NULL;
    AddTolist(Start,End,tmp);
    CountQueue++;
    return *this;
    }
    unsigned int Lenght()
    {
    return CountQueue;
    }
    bool empty() const{return Start ==NULL;}
    
    Queue &operator--()
    {
        std::cout<<"извлекли элемент  : "<<Start->Data<<std::endl;
    QueueElement*tmp = new QueueElement;
    tmp = Start;
    Start = Start->sled;
   delete[] tmp;
    CountQueue--;
    }
};
    int main(int ArgCount,char**Arguments)
    {setlocale(2,"rus");
 
    Queue* Q = new Queue();
 
    Q+5;
 
    std::cout<<Q<<std::endl;
 
    Q--;
    std::cout<<Q<<std::endl;
 
    getchar();
    getchar();
    return 0;
    }
Миниатюры
разобраться с очередью  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2013, 20:48     разобраться с очередью
Посмотрите здесь:

C++ работа с очередью
Access Violation при работе с очередью C++
C++ Программа с очередью
C++ Ошибка в цикле с очередью
Работа со стеком и очередью C++
C++ Работа с очередью
Работа с очередью, список C++
C++ Разработать подпрограммы работы с приоритетной очередью

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.11.2013, 04:33     разобраться с очередью #2
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// ConsoleApplication85.cpp: определяет точку входа для консольного приложения.
//
 
//#include "stdafx.h"
#include <cstdio>
#include <iostream>
#include <conio.h>
//#include <locale>
 
typedef struct listItem
{   
    int Data;
    listItem* sled;
} QueueElement;
 
class Queue
{
private:
    QueueElement* Start;
    QueueElement* End;
    unsigned int CountQueue;
    void AddTolist(QueueElement *&Start, QueueElement *&End, QueueElement *Temp)
    {
    
        if (Start)
        {
            End ->sled = Temp;
            End = Temp;
        }
        else 
        {
            Start = End = Temp;
        }
    }
 
public:
//по Умолчанию
    friend std::ostream &operator<<(std::ostream &Stream, const Queue &q)
    {
        QueueElement *tmp= q.Start;
        while(tmp)
        {
            Stream << tmp ->Data << " " << std::endl;
            tmp = tmp ->sled;
        }
        return Stream;
    }
    
    Queue():CountQueue(5)
    {
        std::cout << "количество элементов" << std::endl;
        std::cin >> CountQueue;
        Start = End = NULL;
        QueueElement* temp;
 
     
        for (int i = 0;i < CountQueue; i++)
        {
            temp = new QueueElement;
            std::cin >> temp ->Data;
            temp ->sled = NULL;
            AddTolist(Start, End, temp);
        }
    }
    
    ~Queue()
    {
        QueueElement *tmp = this->Start;
        while(Start)
        { tmp = Start;
        Start = Start->sled;
        delete tmp;
         
        }
    
    }
    Queue& operator+(int Number)
    { 
        std::cout << " добавили элемент " << Number << std::endl;
        QueueElement* tmp =new QueueElement;
        tmp->Data = Number;
        tmp->sled = NULL;
        AddTolist(Start,End,tmp);
        CountQueue++;
        return *this;
    }
    
    unsigned int Lenght()
    {
        return CountQueue;
    }
    
    bool empty() const{return Start ==NULL;}
    
    Queue &operator--()
    {
        std::cout<<"извлекли элемент  : "<<Start ->Data<<std::endl;
        QueueElement *tmp;
        tmp = Start;
        Start = Start->sled;
        delete[] tmp;
        CountQueue--;
        return *this;
    }
};
 
int main(int ArgCount,char**Arguments)
{
    setlocale(0,"");
 
    Queue* Q = new Queue();
 
    *Q + 5;
 
    std::cout<< *Q << std::endl;
 
    --(*Q);
    std::cout<< *Q <<std::endl;
 
    getchar();
    getchar();
    return 0;
}
Yandex
Объявления
18.11.2013, 04:33     разобраться с очередью
Ответ Создать тему
Опции темы

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