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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
don_keyhot
4 / 4 / 2
Регистрация: 02.04.2014
Сообщений: 60
#1

Как представиь очередь, состоящую из структур, на статическом массиве? - C++

10.04.2014, 14:17. Просмотров 353. Ответов 9
Метки нет (Все метки)

из условия задачи:
Разработать программу, реализующую алгоритм очереди (20 элементов). Задача решается в двух вариантах: статическом (на основе массива структур) и динамическом.

так вот динамическую очередь я себе представляю так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//-----------------------------------------------------------
const int MAX_SIZE = 20;       // максимальное количество элементов в очереди
const int L_NAME = 30;         // длина полей "Наименование магазина" и "ФИО директора" в структуре
 
// структура Магазин
struct Magazin
{
    int     nomer;         // номер магазина
    char    name[L_NAME];  // наименование магазина
    char    fio[L_NAME];   // ФИО директора магазина
    int     kol_sotr;      // количество сотрудников
    double  dohod;         // годовой доход
};
 
//-----------------------------------------------------------
// структура Node - узел, элемент очереди
struct Node
{
    Magazin Data;       // Магазин
    Node *next;         // указатель на следующий узел очереди
};
и далее работаю с указателями next.

Но вот ну никак не могу представить себе очередь на статическом массиве (
у меня перепутались в голове два варианта:

1) или очередь делать структурой с вложенным массивом структур arr_mag[MAX_SIZ]:

C++
1
2
3
4
5
struct Node
{
    Magazin arr_mag[MAX_SIZ];       // Магазин
    Node *next;         // указатель на следующий узел очереди
};
2) или же просто в функции main() определять массив структур

C++
1
magazin arr_mag[MAX_SIZ];
и далее работать с этим массивом?

Добавлено через 11 минут
3) или же вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct Magazin
{
    int     nomer;         // номер магазина
    char    name[L_NAME];  // наименование магазина
    char    fio[L_NAME];   // ФИО директора магазина
    int     kol_sotr;      // количество сотрудников
    double  dohod;         // годовой доход
    Node *next;         // указатель на следующий узел очереди
};
 
//-----------------------------------------------------------
// структура Node - узел, элемент очереди
struct Node
{
    Node *top;  // голова
    Node *end;  // конец
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2014, 14:17     Как представиь очередь, состоящую из структур, на статическом массиве?
Посмотрите здесь:

Освобождение памяти из под Объектов в статическом массиве указателей - C++
Всем добрый вечер! Решил расширить программу из книжки Лафорте Р. ООП в С++ стр. 574 путем добавления функции удаления данных о конкретном...

Сеть и очередь структур - C++
Всем привет. Пишу клиент-серверное приложение, в качестве пакета данных у меня 4 int числа, в виде структуры. struct message { ...

Как проинициировать в массиве структур (создонном ранее) каждый элемент - C++
1.Почему нельзя проиницировать каждую структуру в массиве созданном раньше: struct CandyBar { char name; float weight; int...

Как найти заданный элемент (типа char) в массиве структур? - C++
Есть массив структур в виде адресной книги с 10 записями с уже введёнными данными (фамилия, имя, улица, номер дома и номер квартиры). ...

Как сделать ввод строки с пробелами в динамическом массиве структур? - C++
Всем привет! У меня не получается ввести строку с пробелами. Ввожу, например: Audi TT, TT отбрасывает. Дальше из-за этого не получается...

C++ занесение структур находящихся в разных потоках, в общую очередь - C++
Весь код приводить не стал, надеюсь идея будет понятна. Я циклом создал потоки а теперь, нужно структуры (Clien), которые в этих потоках...

Реализовать классы для структур данных «стек» и «очередь» - C++
дали такое задание, не понимаю что делать.. Реализовать классы для структур данных «стек» и «очередь». Следует реализовать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.04.2014, 14:26     Как представиь очередь, состоящую из структур, на статическом массиве? #2
Цитата Сообщение от don_keyhot Посмотреть сообщение
очередь на статическом массиве
Выделяем память размером с максильную длину очереди. И дополнительно имеем указатель на элемент, который считаем первым в очереди. Когда первый элемент обработан - передвигаем указатель на следующий элемент (циклически).
don_keyhot
4 / 4 / 2
Регистрация: 02.04.2014
Сообщений: 60
10.04.2014, 14:37  [ТС]     Как представиь очередь, состоящую из структур, на статическом массиве? #3
Tulosba,
спасибо, но не совсем понял
как, в чем, где мне хранить записи magazin?

Добавлено через 1 минуту
мне вариант что попроще

Добавлено через 5 минут
опишите мне нужные структуры, а то я не могу представить себе их вложенность друг в друга
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.04.2014, 14:40     Как представиь очередь, состоящую из структур, на статическом массиве? #4
Цитата Сообщение от don_keyhot Посмотреть сообщение
как, в чем, где мне хранить записи magazin?
Ну, если magazin это элемент очереди, то заводите массив вида:
C++
1
magazin queue[MAX_SIZE];
И указатель на элемент, который считаем первым в очереди.
В качестве "указателя" имеет смысл взять просто число, т.е. номер эл-та в массиве.
C++
1
int first = 0;
Ещё конечно надо знать текущий размер очереди.
don_keyhot
4 / 4 / 2
Регистрация: 02.04.2014
Сообщений: 60
10.04.2014, 14:49  [ТС]     Как представиь очередь, состоящую из структур, на статическом массиве? #5
я не понимаю в чем разница между
очередью на основе статического массива структур
от простого массива структур
magazin arr_mag[MAX_SIZ];
?

Добавлено через 2 минуты
неужели разница между ними только в том, что в случае очереди запрещен доступ по произвольному индексу, только последовательный доступ?

Добавлено через 5 минут
да магазин - элемент очереди
и размер известен заранее = 20 элементов
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.04.2014, 14:54     Как представиь очередь, состоящую из структур, на статическом массиве? #6
В понятии очереди доступ должен быть только последовательный. Если структура, на базе которой реализована очередь (массив например) допускает случайный доступ, то это ничего не значит, т.к. внутренняя структура не должна быть доступна пользователю класса.
Возможно Вам стоит ознакомиться с такими базовыми структурами данных как: списки, очереди, массивы ... Если еще не знакомы конечно.
В STL можно посмотреть конкретную реализацию. std::list, std::queue, std::vector и т.д.
don_keyhot
4 / 4 / 2
Регистрация: 02.04.2014
Сообщений: 60
10.04.2014, 14:54  [ТС]     Как представиь очередь, состоящую из структур, на статическом массиве? #7
подведем итоги
1) объявляем структуру элемент очереди
struct Magazin {...};

2) объявляем статический массив
magazin arr_mag[20];

3) заводим переменную-индекс для доступа к очереди
int top = 0;

так?
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.04.2014, 14:57     Как представиь очередь, состоящую из структур, на статическом массиве? #8
Цитата Сообщение от don_keyhot Посмотреть сообщение
так?
Так. Но ещё текущее кол-во элементов в очереди тоже надо знать.
don_keyhot
4 / 4 / 2
Регистрация: 02.04.2014
Сообщений: 60
10.04.2014, 15:01  [ТС]     Как представиь очередь, состоящую из структур, на статическом массиве? #9
Tulosba, спасибо, так и сделаю
но я вообще-то не понимаю смысла в очереди на основе статического массива?
получается, что интерфейс тот же что и с обычным массивом, только дополнительно накладываются ограничения на доступ? так просто, а я голову ломаю )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2014, 15:09     Как представиь очередь, состоящую из структур, на статическом массиве?
Еще ссылки по теме:

В массиве целых чисел найти предпоследнюю группу, состоящую из возрастаю- щей последовательности цифр - C++
1 В массиве целых чисел найти предпоследнюю группу, состоящую из возрастаю- щей последовательности цифр одна тема - одна задача,...

Реализовать очередь на массиве - C++
Начал знакомиться с очередью, хотелось бы увидеть пример реализации ее на массиве и без классов пожалуйста, их еще не проходил:) И если...

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

Поиск в массиве структур. - C++
Кто может,пожалуйста,гляньте. Вот мой массив: #include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> ...

Сортировка в массиве структур - C++
Здравствуйте . Вот я создаю структуру: struct Data //описываемая структура { int m; int year; int day; }; в...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.04.2014, 15:09     Как представиь очередь, состоящую из структур, на статическом массиве? #10
Цитата Сообщение от don_keyhot Посмотреть сообщение
с обычным массивом
А что Вы называете обычным массивом?
Цитата Сообщение от don_keyhot Посмотреть сообщение
интерфейс тот же
Интерфейс не должен зависеть от реализации. Одно из основных правил ООП.
Yandex
Объявления
10.04.2014, 15:09     Как представиь очередь, состоящую из структур, на статическом массиве?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru