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

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

Войти
Регистрация
Восстановить пароль
 
 
mugen0202
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30
#1

Стек и Очередь в С++(кусок кода написал, но дальше не могу) - C++

09.10.2013, 09:25. Просмотров 862. Ответов 19
Метки нет (Все метки)

Я описал вроде как саму очередь и функцию удаления контейнера,а самое главное пока что-то никак не пойму как делать. Помогите пожалуйста.Вот условие, а кусок кода ниже:
Определить структуру очереди и разработать функции, которые необходимы для работы с заданным контейнером:
функция складывания элемента push(память выделять динамически), функцию извлечения элемента pop, функцию печати содержимого контейнера на экран, функцию удаления контейнера.Создать программное приложение, в котором создается контейнер и заполняется элементами, которые в качестве данных сберегают уникальные числа диапазоном от 1 до 100. Поместить максимальный элемент очереди на первую позицию. После чего все созданные контейнеры удаляются. Глобальные переменные не использовать. Функция 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
#include<iostream>
#include<stdlib.h>
struct queue
{
    int data;
    queue *next;
}*head, *tail, *head_pos, *tail_pos;
void push(queue **head, queue **tail, int data)
{
    queue *element=new queue;
    element->data=data;
    element->next=NULL;
    if(*head==NULL)
        *head=*tail=element;
    else
    {
        (*tail)->next=element;
        *tail=element;
    }
}
void pop(queue ** head)
{
    *head=(*head)->next;
}
void del(queue **head, queue **tail)
{
    if(*head!=(*tail)->next)
    {
        pop(&(*head));
        del(&(*head),&(*tail));
    }
}
Добавлено через 8 часов 29 минут
Основная часть,это я имею ввиду "поместить макс. элемент на первую позицию". Эту, самую главную функцию не знаю как написать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2013, 09:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стек и Очередь в С++(кусок кода написал, но дальше не могу) (C++):

Стек и очередь - C++
Создать класс поезд, состоящий из класса остановки. Класс поезд: номер поезда, пункт назначения, время отправления. Класс остановки :...

Стек и очередь - C++
Задание 1. Реализовать программу, выполняющую стандартный набор операций со стеком на основе массива: • проверку пустоты стека ...

Очередь и стек - C++
Система состоит из трех процессоров P1, P2, P3, очереди F, стека S и распределителя задач R. В систему поступают запросы на выполнение...

стек и очередь - C++
Обращаюсь с просьбой помочь с задачами...Есть задача,готовая,ее нужно сделать через СТЕК и ОЧЕРЕДЬ!Пожалуйста!) Составить программу, в...

стек и очередь - C++
Задание такое: создать список из целых чисел. Удалить лишние элементы в списке так, чтобы в результирующем списке каждый элемент был не...

Стек и очередь - C++
Прошу помочь в решении задачи, я новичек!!!:( Мне необходимо создать стек и очередь на C++(Microsoft Visiual C++ 6.0) Буду очень...

19
XRuZzz
Антикодер
681 / 583 / 29
Регистрация: 15.09.2012
Сообщений: 2,531
09.10.2013, 09:47 #2
а вы можете придумать пример, где такую очередь можно использовать?
+не совсем ясно, вам нужна очередь типа LIFO(стек) или FIFO?
0
mugen0202
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30
09.10.2013, 19:26  [ТС] #3
Очередь типа ФИФО. Я предполагаю,что нужно ее как-то пересобрать. Найти этот максимальный элемент и может собрать новую очередь. Но как точно это сделать я не знаю. Но то,что очередь типа ФИФИ это точно. В задание указано так.
0
XRuZzz
Антикодер
681 / 583 / 29
Регистрация: 15.09.2012
Сообщений: 2,531
09.10.2013, 19:30 #4
Цитата Сообщение от mugen0202 Посмотреть сообщение
Очередь типа ФИФО. Я предполагаю,что нужно ее как-то пересобрать. Найти этот максимальный элемент и может собрать новую очередь. Но как точно это сделать я не знаю. Но то,что очередь типа ФИФИ это точно. В задание указано так.
то есть вы согласны, что зря написали про стек в заголовке темы?
0
mugen0202
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30
09.10.2013, 19:34  [ТС] #5
Понятия не имею,зачем написл стек в заголовке. Извиняюсь. Очередь типа Первый зашел первый вышел
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
09.10.2013, 20:01 #6
создаете указатель который будет указывать на максимальный элемент очереди...проходите по очереди и ищете максимальный....после нахождения максимального играетесь с указателями до и после максимального, а сам максимальный элемент вставл в нужное место
0
mugen0202
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30
09.10.2013, 20:29  [ТС] #7
Напишите пожалуйста, если не сложно, этот участок кода. Буду очень признателен.
0
XRuZzz
Антикодер
681 / 583 / 29
Регистрация: 15.09.2012
Сообщений: 2,531
09.10.2013, 22:29 #8
Цитата Сообщение от mugen0202 Посмотреть сообщение
Напишите пожалуйста, если не сложно, этот участок кода. Буду очень признателен.
сначала придумайте практический пример, где такую очередь можно применить в реальной жизненной ситуации
0
mugen0202
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30
09.10.2013, 23:26  [ТС] #9
Где применить можно? Ну наверное если у нас есть цены какого-то товара, то найти самую большую и пересобрать очередь исходя из "высоты" данных цен. Но мне нужно просто с числами, как в условии..Это лабораторная работа. Мне просто сдать надо. Это не профильный мой предмет. Тут просто сдать и все. По условию у меня там элементы - это числа диапазоном от 1 до 100.

Добавлено через 2 минуты
Может, если мы эти цены, к примеру, пересоберем в зависимости от "высоты", то будет что-то вроде сортировки по возрастанию или убыванию.
0
XRuZzz
Антикодер
681 / 583 / 29
Регистрация: 15.09.2012
Сообщений: 2,531
10.10.2013, 00:38 #10
Цитата Сообщение от mugen0202 Посмотреть сообщение
Где применить можно? Ну наверное если у нас есть цены какого-то товара, то найти самую большую и пересобрать очередь исходя из "высоты" данных цен.
...
ну это можно и циклом сделать, если я правильно вас понял, это скорее сортировка, непонятно зачем использовать очередь в этом случае, а я спрашиваю где можно использовать такую программную структуру-очередь?
включите мозг ответы простые.
0
mugen0202
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30
10.10.2013, 00:51  [ТС] #11
Например для описания некой очереди из жизни: человек подал заявку на что-то. Первый подал- первую и обработали. Заявка, которая была подана последней будет обработана последней. Возможно, в программе будут обрабатываться некие данные или выполняться некие операции, в зависимости от того, что было подано первым,а что после него.
0
XRuZzz
Антикодер
681 / 583 / 29
Регистрация: 15.09.2012
Сообщений: 2,531
10.10.2013, 09:23 #12
причем может понадобиться заявку с наибольшим номером поставить на первое место(если бы у нас было два поля у объектов, которые мы ставим в очередь, типа int, я бы сказал, что у заявки есть есть номер и приоритет, и сортировать нужно именно по приоритетам)
но куда полезнее вставить в эту очередь список собственных дел, которые у вас появляются, назначить каждому делу номер и приоритет(конечно нужно добавить ещё и название)
а потом всю очередь сортировать в порядке убывания приоритета.
дела которые имеют самый большой приоритет будут первыми появляться из очереди.

Добавлено через 5 минут
а вы в курсе, что в C++ struct и class отличаются только тем, что у struct поля по умолчанию public, а у класса private?
поэтому методы для работы со структурой можно писать в самой структуре, а не отдельными функциями. Вы уверены, что вам нужны именно отдельные от структуры функции?
0
mugen0202
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30
10.10.2013, 11:56  [ТС] #13
Я слышал это, но требование моего Учителя описать это в отдельной функции пользователя.
0
XRuZzz
Антикодер
681 / 583 / 29
Регистрация: 15.09.2012
Сообщений: 2,531
10.10.2013, 12:37 #14
ну ... фаулер советует вначале писать модульные тесты. Для вашего случая надо сделать main, который будет тестировать функции очереди.

Напишите шаблон(в cмысле низкокачественные наброски, а не C++ Template) такого тестирования в main для функций.

наверно есть смысл сказать, что в вашем коде утечка памяти.
0
mugen0202
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30
10.10.2013, 12:43  [ТС] #15
Если это возможно, напишите мне пожалуйста эту функцию для помещения максимального элемента на первую позицию. Очень завтра сдать надо. Я сам это не напишу.
0
10.10.2013, 12:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2013, 12:43
Привет! Вот еще темы с ответами:

стек и очередь - C++
ребят поделитесь плиз программами реализующими на си стек и очередь (хотябы ввод вывод данных)

Очередь(а выходит стек) - C++
Помогите пожалуйста разобраться:собственно задача из все того же Лафоре.. Вот ее рабочее решение(гл 7 упр. 9) #include &lt;iostream&gt; ...

Список, стек и очередь. - C++
Файл содержит вещественные числа. Нужно удвоит вхождение всех чисел N. Решить с помощью стека, списка и очереди в С++. Вся информация...

Объяснить кусок кода - C++
Всем привет, нашел у себя в файле с хелпом напоминалку, но когда-то забыл записать что это. Предполагаю, что это ввод символов в массив...


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

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

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