С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
#1

Массив из двух очередей - C++

21.01.2014, 12:21. Просмотров 1017. Ответов 22
Метки нет (Все метки)

Необходимо создать массив из двух очередей,
c=(c0, c1) – массив из двух очередей
подскажите как это сделать? У меня есть двусвязный список spis, с0 и с1 - двусвязные списки тоже, как из них сделать массив? Как описать этот массив, никак не могу понять.

C++
1
2
3
4
5
6
7
8
9
10
struct spis
{
 int data;
 struct spis *prev;  
 struct spis *next;
};
struct spis *head, *tail;
void main ()
 {
  struct spis *c0,*c1;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2014, 12:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив из двух очередей (C++):

Определить, в которой из двух очередей больше согласных букв - C++
1)Создать две очереди символов. Входная последовательность символов для обеих оче-редей задается пользователем с клавиатуры. Необходимо: ...

Реализовать класс "Массив очередей" - C++
Здравствуйте помогите решить задачу!! вот задание: Реализовать класс "очередь символов"(на базе списка).Реализовать класс "Массив...

Определить объединение из двух полей. Первое поле - массив из двух байт, второе - слово - C++
Определить объединение из двух полей. Первое поле - массив из двух байт, второе - слово. Ввести x в диапазоне от 1 до 15. Вычислить целое...

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

Объединение 2-х очередей - C++
Здравствуйте. Подскажите пожалуйста, как можно объединить 2 не пустые очереди?

Массив: Составить массив из двух исходных по заданному принципу заполнения - C++
Сформировать массив из элементов первого массива, больших последнего элемента второго массива, и элементов второго массива, меньших...

22
egor2116
342 / 373 / 42
Регистрация: 20.01.2013
Сообщений: 1,132
24.01.2014, 14:27 #16
как из структур сделать массив структур
Так же как и из всего остального
C++
1
SPIS * lists = new SPIS[5];
или
C++
1
SPIS lists[5];
0
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
24.01.2014, 14:46  [ТС] #17
не понимаю как можно конкретно две структуры с0 и с1 объединить в массив . Можете написать?
0
egor2116
342 / 373 / 42
Регистрация: 20.01.2013
Сообщений: 1,132
24.01.2014, 15:01 #18
При выполнении вашего кода у меня выдало таки ошибки
давайте разбирать
1. warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
2.
3. main.cpp:30: error: `randomize' undeclared (first use this function)
4. main.cpp:30: error: (Each undeclared identifier is reported only once for each function it appears in.)
5. main.cpp:31: error: `clrscr' undeclared (first use this function)

6.
7. main.cpp:55: error: `random' undeclared (first use this function)
8. main.cpp: In function `void Mergesort(spis**, spis**)':
9. main.cpp:113: error: expected unqualified-id before '(' token
10. main.cpp:114: error: 'struct SPIS' has no member named 'head'
11. main.cpp:128: error: base operand of `->' has non-pointer type `SPIS'
12. main.cpp:129: error: 'struct SPIS' has no member named 'head'
13. main.cpp:132: error: 'struct SPIS' has no member named 'tail'
14. main.cpp:133: error: 'struct SPIS' has no member named 'head'
1. У меня предупреждение - игнорируем.
3. Не обявленная функция - обьявить и определить или удалить.
4. Про эту же функцию.
5. Не обявленная функция - обьявить и определить или удалить.
7. Не обявленная функция - обьявить и определить или удалить.
9. в функции void Mergesort(spis**, spis**)'; обратите внимание на эти строки
C++
1
2
c0->(*head)=NULL;
   a=(*c0)->head;
10. В структуре SPIS нет поля с именем head
11. ругается на эту строку a=(*c0)->head;
12. В структуре SPIS нет поля с именем head
13. В структуре SPIS нет поля с именем tail
14. В структуре SPIS нет поля с именем head

Закоментируйте весь проект оставив только разкоментированными подключение библиотек и пустую функцию main. Далее разкоментируйте объявление и определение структур и так открывайте код по немногу.
Я вижу очень много ошибок особенно в функции void Mergesort (spis **a, spis **b), тут проще переписать чем исправить.(но это только мое мнение)

Добавлено через 12 минут
не понимаю как можно конкретно две структуры с0 и с1 объединить в массив . Можете написать?
Обьявите их сразу массивом
0
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
28.01.2014, 08:09  [ТС] #19
egor2116, Вот вся проблема, что я не понимаю, как объявить их массивом. как потом этот массив передать в функцию... На самом деле у меня не выводит описания ошибок в функциях, но с этим разберусь, гласное этот массив,

Добавлено через 32 минуты
egor2116,
Цитата Сообщение от egor2116 Посмотреть сообщение
9. в функции void Mergesort(spis**, spis**)'; обратите внимание на эти строки
Код C++
1
2
c0->(*head)=NULL;
* *a=(*c0)->head;
Я вижу эту ошибку, но я не понимаю как ее исправить, подскажите. пожалуйста...

Добавлено через 53 секунды
и все остальные ошибки это одна ошибка -я не правильно обращаюсь с указателями, а как правильно не пойму
0
egor2116
342 / 373 / 42
Регистрация: 20.01.2013
Сообщений: 1,132
29.01.2014, 11:31 #20
я не правильно обращаюсь с указателями, а как правильно не пойму
Почитайте про указатели.
C++
1
c0->(*head)=NULL;
c0 это указатель на узел списка который содержит указатель на следующий узел,
зачем его разыменовывать, а второе с0 не содержит указателя с именем head.
(наверное как то так)
C++
1
с0->next = NULL;
Та же проблема
C++
1
*a=(*c0)->head;
a - указатель на узел списка(зачем его разыменовывать)
с0 не содержит указателя с именем head.
Наверное как то так
C++
1
a = co->next;
Мой вам совет, этот код не жизнеспособен слишком много ошибок, проще переписать.
Найдите в сети рабочий пример реализации списка, посмотрите как он сделан что бы понять суть, после этого добавите необходимый функционал.
Пример двусвязного списка
0
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
29.01.2014, 12:06  [ТС] #21
я уже раза четыре переписала программу, но проблема остается именно в указателях, я не понимаю чего-то, хотя уже кучу учебников перерыла. Ну вот мои мысли -я создала тип данных spis, потом в программе говорю что есть переменная указатель на список c0, я понимаю, что в ней нет указателей на хвост и голову списка, т.е. мне нужно создать еще один тип данных, как сделать так чтобы у очереди с0 появился указатель на голову и хвост этой очереди?

Добавлено через 1 минуту
В сети в основном создают классы и работают с классами, нам так не надо. Кроме того в сети в основном примеры с массивами и есть еще один очень интересеный пример, но там результирующий список не разбивается на списки с0 и с1, а нам надо именно разбить
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,598
Записей в блоге: 12
29.01.2014, 14:38 #22
Цитата Сообщение от Ульяниус Посмотреть сообщение
Необходимо создать массив из двух очередей,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <queue>
#include <vector>
 
using namespace std;
 
int main()
{
    queue <int> q1,q2;
    q1.push(1);q1.push(2);
    q2.push(3);q2.push(4);
    vector <queue <int>> vec_q;
    vec_q.push_back(q1);
    vec_q.push_back(q2);
    return 0;
}

Цитата Сообщение от Ульяниус Посмотреть сообщение
массив из двух очередей
я так понял - это массив в котором есть два элемента типа "очередь"?. По ангиологии массив из пяти чисел
0
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
29.01.2014, 20:30  [ТС] #23
у меня нет модуля queue и очереди динамические
0
29.01.2014, 20:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 20:30
Привет! Вот еще темы с ответами:

Из двух целочисленных массивов различной размерности сформировать общий массив. Упорядочить полученный массив - C++
Кто может сделайте пожалуйста. Из двух целочисленных массивов различной размерности сформировать общий массив. Упорядочить полученный...

Сложение очередей, перегрузить оператор + - C++
Привет Задание: перегрузить оператор + для очереди. переспрашивал у препода. это не значит в первой очереди 3 элемента и во второй 4...

Дан массив A(N). Сформулировать массив B(M), элементами которого являются большие из двух рядом стоящих в массиве A чисел - C++
Нужен код программы. Помогите даме пожалуйста.

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


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

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

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