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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.67
Koketka
5 / 5 / 0
Регистрация: 27.11.2009
Сообщений: 232
#1

Циклические очереди в C++ - C++

27.11.2009, 18:57. Просмотров 3613. Ответов 3
Метки нет (Все метки)

Привеет всем
нужно написать функции занесения и извлечения данных для циклической очереди???(обратите внимание на аргументы можно использовать перегрузку функций - так в задании написано)

простую очередь я вот так накидала(правильно ли?!!):

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
struct Queue {
   int d;
   Queue *p;
};
    
/*prostaya ochered formirovanie*/
Queue *first(int d){
  Queue *pv = new Queue;
  pv->d = d;
  pv->p = 0;
  return pv;
}
 
/*prostaya ochered + */
void add(Queue **end, int d){
  Queue *pv = new Queue;
  pv->d = d;
  pv->p = 0;
  (*end)->p = pv;
}
 
/*prostaya ochered - */
int del(Queue **beg){
  int temp = (*beg)->d;
  Queue *pv = *beg;
  *beg = (*beg)->p;
  delete pv;
  return temp;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2009, 18:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Циклические очереди в C++ (C++):

Очереди. Каким образом считать две очереди из одного текстового файла? - C++
Здравстуйте. В задании первый пункт состоит в том, что нужно сформировать две очереди по n элементов с помощью считки данных из...

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

Извлечь из очереди начальные элементы и вывести их значения и новые адреса начала и конца очереди - C++
Дано число N (> 0) и указатели P1 и P2 на начало и конец непустой очереди. Извлечь из очереди N начальных элементов и вывести их значения...

Создание очереди и удаление элемента очереди по усмотрению пользователя - C++
Вот код он создает очередь и должен удалить элемент очереди по усмотрению пользователя проблема заключается в том что при попытки удалить...

Разработать программу формирования очереди, содержащей целые числа, и упорядочивания по возрастанию элементов в этой очереди. - C++
Доброе всем время суток! Помогите пожалуйста! Разработать программу формирования очереди, содержащей целые числа, и упорядочивания по...

Очереди. Дан массив. Создать две очереди, первая должна содержать все нечетные, а вторая - все четные - C++
Очереди. Дан массив. Создать две очереди, первая должна содержать все нечетные, а вторая - все четные числа из исходного набора; порядок...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Koketka
5 / 5 / 0
Регистрация: 27.11.2009
Сообщений: 232
28.11.2009, 07:01  [ТС] #2
пишите кто что знает, будут полезны любые мысли...
0
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
28.11.2009, 08:54 #3
Доброе утро. что-то никто вам отвечать не хочет =)
Вот набросал по быстрому - код сырой.
код
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
//Наши элементы имеют вид:
struct node
{
    some_type data;
    node* next;
}
//указатель на голову очереди. Если NULL, то очередь пуста.
node* head = NULL;
//функции добавления:
void push(node* tmp)
{
    //Выделяем память, переносим туда данные:
    node* tail = new node;
    tail->data = tmp->data;
    // Именно здесь логично использовать перезгрузку 
    //функции присваивания и определить правила по которым 
    //выполняется копирование данных нашего типа some_type.
 
    tail->next = head;// "Хвост змеи кусает её голову"
    
    //теперь нужно найти предыдущий узел (который 
    // всё еще указывает на голову) и исправить его так,
    // чтобы он указывал на добавляемый узел:
    node* ip = tail->next;
    while(!(ip->next==head))   ip = ip->next;
    ip->next = tail;    
}
 
node* pop() // возвращает указатель на элемент, элемент 
            // исключается из очереди. После окончания работ с 
            // элементом, не забываем освобождать память.
{
    node* tmp = head;
    //новой головой станет либо следующий узел, либо, если вытал-
    //киваемый элемент единственный (является головой и хвостом 
    //одновременно, следовательно указывает сам на себя) значение NULL -
    // очередь будет пуста.
    head = (head==head->next)?NULL:head->next;        
    return tmp;  
}
1
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
28.11.2009, 11:17 #4
обратите внимание на аргументы можно использовать перегрузку функций
значит описать двунапр и однонапр очередь.
Циклической ето однонапр вроде.
P.s Функции написаны корректно.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2009, 11:17
Привет! Вот еще темы с ответами:

Объединить две очереди в одну, как создать две очереди - C++
"Объединить две очереди в одну, чередуя элементы первой и второй очереди. Основной вопрос как создать две очереди? точнее даже три, в...

Циклические алгоритмы - C++
Ребята,надо на Borland C++ 5.02 сделать,вот задание:Дано натуральне число n. Обчислити P=(1+1/1)(1+1/2{)}^{2}...(1+1/n{)}^{n}

Циклические алгоритмы. - C++
Циклические алгоритмы. 1. Известны оценки по информатике каждого из 20 учеников класса. Сколько учеников имеют по информатике оценку...

Циклические операторы (for,do,while) - C++
http://imageshack.us/a/img821/3474/aaaaaaaalz.jpg http://imageshack.us/a/img689/165/ffffue.jpg Объясните плс почему внутри цикла p=x...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.11.2009, 11:17
Ответ Создать тему
Опции темы

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