0 / 0 / 0
Регистрация: 08.12.2018
Сообщений: 1
1

В чем может быть ошибка? Проблема с выводом очереди

08.12.2018, 20:28. Показов 526. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, нужно создать класс очереди и класс элементов.
Вроде всё нормально, но когда запускаю функцию q.Print() программа бесконечно выводит мне элементы.
Не могу понять, где ошибся

Вот код:
Основная программа
C++ (Qt)
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
#include "Element.h"
#include "Queue.h"
#include <conio.h>
#include <iostream>
 
void main()
{
    Element e1, e2, e3, e4, e5;
    e1.value = 10;
    e2.value = 20;
    e3.value = 30;
    e4.value = 40;
    e5.value = 50;
 
    Queue q;
 
    q.Put(&e2);
    q.Put(&e3);
    q.Put(&e1);
    q.Put(&e5);
    q.Put(&e3);
 
    q.Print();
    
 
 
    system("Pause");
}
Класс Element
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "Element.h"
#pragma once
 
class Queue
{
public:
    Element* first;
    Element* last;
    int count;
    Queue();
    ~Queue();
    void Put(Element* e);
    Element* Get();
    void Print();
};

Класс Queue:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "Element.h"
#pragma once
 
class Queue
{
public:
    Element* first;
    Element* last;
    int count;
    Queue();
    ~Queue();
    void Put(Element* e);
    Element* Get();
    void Print();
};
Реализация класса Queue
C++ (Qt)
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
#include "iostream"
#include "Queue.h"
 
using namespace std;
 
Queue::Queue()
{
    first = 0;
    last = 0;
    count = 0;
}
 
 
Queue::~Queue()
{
}
 
void Queue::Put(Element*e)
{
    if (e == 0)
        return;
    e->prev = last;
    if (count < 1)
    {
        last = e;
        first = e;
    }
 
    last->next = e;
    last = e;
    count++;
    cout << "Element " << e->value << " Added to queue" << endl;
}
 
Element* Queue::Get()
{
    Element* e;
    if (first == 0)
        return 0;
    e = first;
    first = first->next;
    first->prev = 0;
    e->next = 0;
    count--;
    cout << "Element " << e->value << "removed from queue" << endl;
    return e;
}
 
void Queue::Print()
{
    if (count < 1)
    {
        cout << "Queue is empty";
        return;
    }
    Element* e;
    e = first;
    while (e!= 0)
    {
        cout << e->value << ", ";
        e = e->next;
    }
    cout << endl;
}
Вывод консоли:
Кликните здесь для просмотра всего текста
Element 20 Added to queue
Element 30 Added to queue
Element 10 Added to queue
Element 50 Added to queue
Element 30 Added to queue
20, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50, 30, 10, 50... до бесконечности
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2018, 20:28
Ответы с готовыми решениями:

Пропали звуки beep: в чем может быть проблема?
Выдавало ошибки типа Загружено: &quot;C:\Windows\SysWOW64\ntdll.dll&quot;, Невозможно найти или открыть файл...

Выдает ошибку компиляции на ACMP. В чем может быть проблема?
#include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; int main() { long long C, H,...

В чем может быть ошибка?
Вот программа: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt;...

В чем может быть ошибка, и как её вылечить?
Проблема такая. Покуда я студент, то пичкают нас всяческой дрянью, и вот настал язык Си. С С++ я...

1
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
08.12.2018, 20:51 2
Отладчиком смотри.
0
08.12.2018, 20:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2018, 20:51
Помогаю со студенческими работами здесь

В чем может быть ошибка? (передача аргументов функции)
Есть двумерный массив, симулирующий игровое поле (0 означают пустоту, 8 игрок) Есть некая функция,...

В чем может быть ошибка? (пример с побитовым сдвигом)
Всем доброго дня) В одной из книжек по С++ (Horton) наткнулся на такую вот небольшую задачку: ...

Программа не работает, но ошибок не выдает. В чем может быть ошибка?
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;cstdlib&gt; #define m 8 using namespace std; int...

В чем может быть ошибка. Расстояние между вершинами дерева
Входные данные: Первая строка содержит количество вершин в дереве n(1&lt;=n&lt;=500000). Вершины имеют...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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