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

И опять рукописная очередь

09.04.2017, 16:34. Показов 432. Ответов 4
Метки нет (Все метки)

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

Ошибка вот в чем, для хорошей работы с очередью, мне нужно запомнить указатель на самый первый элемент в очереди. Но вот как его передавать в другие функции... Скорее всего (я практически уверен) что я выбрал не верный подход, с похожей загводкой я сталкивался уже, но решить ее не смог, приходилось искать другие подходы.

Вот то что у меня пока что есть:

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
#include "stdafx.h"
#include<iostream>
using namespace std;
 
struct number
{
    int a;
    number *adr;
    number() {
        adr = NULL;
    }
 
}*top, *p;//р- указатель на каждую следующею структуру,    first- буфер для хранения адреса первого структурного эллемента
 
number *first;
 
 
int sizeQueue(number *top, number *p, number *first);
void addFirstElementOfQueue(number *top, number *first);
void addElementOfQueue(number *top, number *p, number *first);
 
 
int main()
{
 
    addFirstElementOfQueue(top, first);
    addElementOfQueue(top, p, first);
    cout << "Size-> " << sizeQueue(top, p, first) << endl;
 
    cout << endl;
    system("pause");
    return 0;
}
 
void addFirstElementOfQueue(number *top, number *first) {
 
    top = new number;
    cin >> top->a;
    top->adr = NULL;
    
    first = top;
    cout << "first-> " << first << endl;
}
 
void addElementOfQueue(number *top, number *p, number *first) {
 
    int  x = 0;
 
    
    cout << "first-> " << first << endl;
    cout << "p-> " << p << endl;
    do {
 
        p = new number;
        cin >> p->a;
        top->adr = p;
        top = p;
 
        x++;
    } while (x != 1);
 
 
}
 
int sizeQueue(number *top, number *p, number *first) {
 
    int siz = 0;
    p = first;
    do {
        
 
        p = p->adr;
        siz++;
    } while (p != NULL);
 
    return siz;
}

В интернете я не нашел адекватного кода очереди. А на сайте на котором нашел, я понять не особо смог...

Можно ли организовать очередь исользуя только структуру, структурные переменные которой будут составлять БД?

Задача не стоит написать универсальную очередь, нужно написать очередь привязанную к одной структуре.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2017, 16:34
Ответы с готовыми решениями:

Опять MDI и опять нет активной формы
В общем, перед тем, как налетать на меня за эту тему, скажу, что я потратил более 6 часов на...

Сформировать односвязную очередь из элементов, которые входят в очередь Q1, но не входят в очередь Q2
Составить программу обработки динамической структуры данных: сформировать односвязную очередь Q из...

Опять БАН опять Яндекс...
Вообщем ситуация такая, был сайт, написаный на дримвевере, отлично индексируемый и имеющий 400-500...

Сформировать очередь по файлу целых чисел. Промоделировать очередь в супермаркете
Сформировать очередь по файлу целых чисел. Промоделировать очередь в супермаркете. В каждый момент...

4
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
10.04.2017, 17:13 2
Если функция должна менять свой аргумент, то его нужно передавать по ссылке. Например:
C++
1
void addFirstElementOfQueue(number *& top, number *& first);
P.S. Для указателей на начало и хвост очереди лучше использовать более подходящие имена head и tail.
0
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
10.04.2017, 19:52  [ТС] 3
likehood, я тут покумекал над кодом и вставил глобальные переменные (все структурные) пока что воркает. Как вы считаете, правильный подход или нет?
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
10.04.2017, 20:03 4
Цитата Сообщение от Rec_cm Посмотреть сообщение
вставил глобальные переменные (все структурные) пока что воркает. Как вы считаете, правильный подход или нет?
Если воркает, значит подход имеет право на жизнь. Дальше программу можно немного улучшить - сделать глобальные переменные локальными и передавать их в функции в качестве параметров.
0
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
10.04.2017, 20:11  [ТС] 5
likehood, это не так просто по логике делать... Но я сделаю!)))) Спасибо за то что первым откликнулись. Признаться, я не ожидал что кто то мне ответит
0
10.04.2017, 20:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2017, 20:11
Помогаю со студенческими работами здесь

Очередь (сделать очередь, чтобы добавляло, удаляло, читало. Не STL.)
Помогите пожалуйста написать очередь. Есть Температура double и ее тип int ну и нужно сделать...

Возможно ли смоделировать очередь, где условие входа в очередь задаётся логическим выражением?
Доброго всем дня! Моделирую Lean/Kanban, есть такое требование: пользователь должен иметь...

Дана очередь с вещественными числами, упорядоченными по убыванию. Добавить в очередь среднее арифметическое элементов
Дана очередь с вещественными числами, упорядоченными по убыванию. Добавить в очередь среднее...

Задача на очередь (вывод сообщения, что очередь пуста)
Доброго дня! Есть задачка на очередь, которая работает нормально, только надо добавить код, чтобы...


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

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