Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2011, 21:43   #1
Lucefer2007
 
Регистрация: 05.03.2011
Сообщений: 6
По умолчанию Очереди

У меня небольшой вопрос.
Разработать функции работы с приоритетной очередью. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов (начало очереди). Приоритет: мах значения числового параметра, при совпадении параметров - FIFO.

Этот код подходит? Разобраться не могу.
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using std::cin;
using std::cout;
 
 
struct list
 { int val;
   list *next;
 };
 
//----- Постановка элемента в конец очереди
// list *PH[2]; - заголовок очереди
void intoFIFO(list *ph[], int v)
{
list *p= new list;                               // создать элемент списка;
p->val = v;                                              // и заполнить его
p->next = NULL;                                // новый элемент - последний
if (ph[0] == NULL)                                    // включение в пустую
     ph[0] = ph[1] = p;                                          // очередь
else                                              // включение за последним
     {                                                         // элементом
     ph[1]->next = p;                     // следующий за последним = новый
     ph[1] = p;                                        // новый = последний
     }
}
void scan(list *ph[])
 {
 
 for(list* p=ph[0];p!=NULL;p=p->next)
 cout<<p->val<<" ";
 cout<<"\n";
 }
 
 
 
//----- Извлечение из очереди
int fromFIFO(list *ph[])
{ list *q;
if (ph[0] ==NULL) return -1;                               // очередь пуста
q = ph[0];                                            // исключение первого
ph[0] = q->next;                                                // элемента
if (ph[0] ==NULL)
     ph[1] = NULL;                                  // элемент единственный
int v = q->val;
 
return v;
}
 
void main()
{
        list A3={7,NULL}, A2={5,&A3}, A1={1,&A2};
list*  ph[2];
ph[0]=&A1, ph[1]=&A3;
scan(ph);
intoFIFO (ph,10);
intoFIFO (ph,2);
scan(ph);
int vv= fromFIFO (ph);
scan(ph);
 
 
getch();
}
Тему только прошли, так я пока, чота не понимаю.
Lucefer2007 вне форума Ответить с цитированием
Старый 13.03.2011, 16:58   #2
Lucefer2007
 
Регистрация: 05.03.2011
Сообщений: 6
По умолчанию

Код:
list A3={7,NULL}, A2={5,&A3}, A1={1,&A2};
list*  ph[2];
ph[0]=&A1, ph[1]=&A3;
Помогите с этим участком. Вернее. объясните, как в эту очередь записать чисто свои элементы, т.е. без этой шляпы, а через обычный цикл.
Lucefer2007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очереди anuta90 Помощь студентам 3 09.10.2010 22:07
очереди Nostalgia Помощь студентам 2 22.03.2010 17:48
Реализация очереди! Lazio Помощь студентам 2 08.04.2009 17:41