Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 21.05.2016
Сообщений: 18
1

Реализовать очередь

05.10.2016, 21:02. Показов 999. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
класс figure
 
#pragma once
class figure
{
public:
    figure(void);
    virtual ~figure(void);
    //figure * adr;
    figure* prev;
    figure* next;
    
 
    virtual double GetSquare();
    virtual void PrintName();
};


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
Класс
 Очередь
 
#pragma once
#include"figure.h"
 
 
class queue
{
public:
    queue(void);
    ~queue(void);
 
    //int size;
 
    figure* first;
    figure* last;
    int count;
 
    figure *f;
    void push(figure*);
    figure* Get();
    void ShowSquares();
};
В push передаются указатели на объект типа figure, для создания очереди, но у меня почему то не работает, помогите пожалуйста разобратся

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
#include "queue.h"
#include "figure.h"
#include "Rectangles.h"
#include <iostream>
using namespace std;
 
queue::queue(void)
{
    first = 0;
 
    last = 0;
 
    count = 0;
}
 
 
queue::~queue(void)
{
}
 
void queue ::push (figure *)
{  
 
if (f == 0)
return;
f->prev = last;
if (count < 1)
{
last = f;
first = f;
}
last->next = f;
last = f;
count++;
cout << "Element " <<figure * << "added to queue" << endl;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2016, 21:02
Ответы с готовыми решениями:

Реализовать очередь
Очередь - это устройство для хранения данных, похожее на стек. Отличие в том, что в стеке последний...

Реализовать очередь на массиве
Начал знакомиться с очередью, хотелось бы увидеть пример реализации ее на массиве и без классов...

Реализовать очередь на одномерном массиве
Программа должна позволять многократно выполнять операции над очередью. При выполнении функции...

Реализовать добавление элементов в очередь
Помогите сделать,кто знает: Создать очередь случайных чисел. Реализовать добавление элементов в...

1
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
06.10.2016, 14:13 2
C++
1
void queue ::push (figure *) // где имя переменной для хранения указателя?
Добавлено через 1 час 42 минуты
Я бы сделал так
Figure

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
//header
#pragma once
#include <iostream>
class Figure{
    int i;
public:
    Figure();
    Figure(const int&);
    virtual ~Figure();
 
 
    virtual double GetSquare();
    virtual void PrintName();
 
    friend std::ostream& operator << (std::ostream&, const Figure&);
};
//c++
#include "Figure.h"
 
 
Figure::Figure():i(0)
{
}
 
Figure::Figure(const int & i): i(i){}
 
 
Figure::~Figure()
{
}
 
double Figure::GetSquare()
{
    return 10.0;
}
 
void Figure::PrintName(){
    std::cout << "Figure Name" << i;
}
 
std::ostream & operator<<(std::ostream & out, const Figure &f)
{
    out  << f.i;
    return out;
}
Node

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
//header
#pragma once
#include "Figure.h"
struct Node{
    Figure data;
    Node*next;
 
    Node();
    Node(Figure, Node* = nullptr);
    Node(const Node&);
    Node(Node&&);
    Node& operator = (const Node&);
    Node& operator = (Node&&);
    ~Node();
};
//c++
#include "node.h"
 
 
 
Node::Node()
    : data(Figure()),  next(nullptr)
{}
 
Node::Node(Figure d, Node *n)
    : data(d), next(n)
{}
 
Node::Node(const Node &other)
    : data(other.data), next(other.next)
{}
 
Node::Node(Node &&other)
    : data(other.data), next(other.next)
{
    other.data = Figure(); other.next = nullptr;
}
 
Node & Node::operator=(const Node &other){
    if (this != &other) {
        data = other.data;
        next = other.next;
    }
    return *this;
}
 
Node & Node::operator=(Node &&other){
    if (this != &other) {
        data = other.data;
        next = other.next;
 
        other.data = Figure();
        other.next = nullptr;
    }
    return *this;
}
 
 
Node::~Node(){
}
Queue
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
124
125
126
127
128
129
130
131
132
133
134
//header
#pragma once
#include "node.h"
#include "Figure.h"
#include <iostream>
 
class Queue{
    Node  *first, *last;
    size_t count;
 
    void push_back(const Figure&);
    void clear();
public:
    Queue();
    Queue(const Queue&);
    Queue(Queue&&);
    ~Queue();
 
    Queue &operator = (const Queue&);
    Queue &operator = (Queue&&);
    void push(const Figure&);
    void pop();
 
    Figure top()const;
    size_t size()const;
 
    friend std::ostream& operator << (std::ostream &out, const Queue&);
};
//c++
#include "queue.h"
 
 
 
void Queue::push_back(const Figure& f){
    Node *tmp = new Node(f);
 
    if (!first) first = tmp;
    if (last) last->next = tmp;
 
    last = tmp;
    count++;
}
 
void Queue::clear(){
    while (first) {
        last = first;
        first = first->next;
        delete last;
    }
    first = last = nullptr;
    count = 0;
}
 
Queue::Queue()
    :first(nullptr), last(nullptr), count(0)
{}
 
Queue::Queue(const Queue &other) 
    : first(nullptr), last(nullptr), count(0)
{
    Node *tmp = other.first;
    while (tmp) {
        push_back(tmp->data);
        tmp = tmp->next;
    }
}
 
Queue::Queue(Queue &&other)
    : first(other.first), last(other.last), count(other.count)
{
    other.first = other.last = nullptr;
    other.count = 0;
}
 
Queue & Queue::operator=(const Queue &other){
    if (this != &other) {
        clear();
        Node*tmp = other.first;
        while (tmp) {
            push_back(tmp->data);
            tmp = tmp->next;
        }
    }
    return *this;
}
 
Queue & Queue::operator=(Queue &&other){
    if (this != &other) {
        first = other.first;
        last = other.last;
        count = other.count;
 
        other.first = other.last = nullptr;
        other.count = 0;
    }
    return *this;
}
 
void Queue::push(const Figure &f){
    first = new Node(f, first);
    if (!last) last = first;
    count++;
}
 
void Queue::pop(){
    Node* tmp = first;
    first = first->next;
 
    delete tmp;
    if (!first) last = nullptr;
    count--;
}
 
Figure Queue::top() const{
    return first ->data;
}
 
size_t Queue::size() const{
    return count;
}
 
 
Queue::~Queue(){
    clear();
}
 
std::ostream & operator<<(std::ostream & out, const Queue &q){
    Node *tmp = q.first;
    while (tmp) {
        out << tmp->data << " | ";
        tmp = tmp->next;
    }
    return out;
}

main

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include "queue.h"
#include "Figure.h"
 
int main()
{
    Queue q;
    for (int i = 0; i < 10; i++) q.push(Figure(i + 1));
 
    Queue q1(q);
    Queue q2;
    q2 = q;
    std::cout << q << std::endl;
    std::cout << q1 << std::endl;
    std::cout << q2 << std::endl;
    while (q.size() > 0) q.pop();
    std::cout << q << std::endl;
    system("pause");
    return 0;
 
}


Добавлено через 5 минут
Класс "Figure" у меня для тестирования, реализацию напишите свою
0
06.10.2016, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2016, 14:13
Помогаю со студенческими работами здесь

Реализовать очередь с приоритетным включением
Задание: Очереди и приоритеты. При добавлении элемента в очередь определяется приоритет его...

Реализовать с использованием массива очередь
13.первое задание 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел....

Реализовать очередь с использованием структуры
Реализовать очередь с использованием структуры.Помогите с заданием пожалуйста!)

Реализовать очередь Unemployed на бирже труда
Кто может помочь написание программы на c++ Задание: Реализовать очередь Unemployed на бирже...

Реализовать очередь с использованием динамического массива
Реализовать очередь с использованием динамического массива.Я сделала код, можете проверить и внести...

Шаблоны. Реализовать шаблонный класс очередь
Реализовать шаблонный класс очередь. Реализовать все основные операции: положить, взять, удалить...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru