С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132

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

21.01.2014, 12:21. Показов 3736. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.01.2014, 12:21
Ответы с готовыми решениями:

Создание двух очередей и стека
Требуется, чтобы программа выполняла обработку нескольких линейных списков (две очереди и стек) в едином адресном пространстве при...

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

Файл из двух очередей
Нужно промоделировать файл с помощью двух очередей. Даже не знаю, с чего начать и как это вообще должно выглядеть.

22
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
21.01.2014, 12:35
Задание не совсем ясное.
Как я понял это есть две очереди(queue) они заполнены какими то значениями вам нужно(наверное) создать класс массива(на подобии std::vector) и этот класс инициализируется двумя очередями и их значения переписываются в массив.
0
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
21.01.2014, 12:45  [ТС]
Мне вообще надо реализовать сортировку слиянием. Но при реализации алгоритма в псевдокоде написано:
Обозначим n – количество элементов в S
a, b – рабочие списки
c=(c0, c1) – массив из двух очередей
p – предполагаемый размер серии
q – фактический размер серии в списке a
r – фактический размер серии в списке b
m – текущее количество элементов в списках a и b
i – номер активной очереди

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<Расщепление (S, a, b, n)>
p:= 1
DO (p < n)
   <инициализация очередей c0, c1>
   i:=0, m:=n
   DO (m > 0)
      IF (m ≥ p) q:=p ELSE q:=m FI
      m:= m – q
      IF (m ≥ p) r:=p ELSE r:=m FI
      m:= m – r
      <слияние(a, q, b, r, ci )>
      i:=1–i
   OD
   a:=c0.Head, b:=c1.Head
   p:=2p
OD
c0.Tail → next:=NIL
S:=c0.Head
Вот строка про массивы меня ввела в ступор, я не понимаю как два двусвязных списка засунуть в один массив. Т.е. это наверное должен быть динамический массив, массив массивов, но как его инициировать я не понимаю, уже весь инет перерыла, не могу найти ответа...
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
21.01.2014, 12:59
как я понял то массив это результат слияния и сортировки.
0
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
21.01.2014, 13:12  [ТС]
да это так, но этот массив же надо как-то объявить, чтобы поместить в него эти очереди, а как это сделать ума не приложу...

Добавлено через 2 минуты
хотя это не результат слияния, это данные из очередей а и b будут помещены в определенном порядке в очереди с0 и с1, а эти очереди надо чтобы были почему то в массиве.....зачем это делать я не понимаю до конца, но знающим людям наверное лучше известно (тем кто писал псевдокод в учебнике)

Добавлено через 2 минуты
я бы попробовала реализовать без массива, мне кажется так было бы проще, но там зачем-то массив надо создать
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
21.01.2014, 13:21
чтобы поместить в него эти очереди,
Зачем ??
Я понял так
Входящие данные 2 очереди с данными
Выходные данные сортированный массив содержащий данные двух очередей.

Если не так обратитесь за разъяснениями к преподавателю.
0
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
21.01.2014, 13:25  [ТС]
а как этот массив описать?
0
176 / 144 / 70
Регистрация: 01.05.2012
Сообщений: 414
21.01.2014, 13:43
Цитата Сообщение от Ульяниус Посмотреть сообщение
Мне вообще надо реализовать сортировку слиянием.
Если так тов вот пример сортировки слиянием:
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
41
42
43
44
45
46
47
void merge(int *a, long lb, long split, long ub) {
// Слияние упорядоченных частей массива в буфер temp
// с дальнейшим переносом содержимого temp в a[lb]...a[ub]
  // текущая позиция чтения из первой последовательности a[lb]...a[split]
  long pos1=lb;
 
  // текущая позиция чтения из второй последовательности a[split+1]...a[ub]
  long pos2=split+1;
 
  // текущая позиция записи в temp
  long pos3=0;
 
  int *temp = new int[ub-lb+1];
 
  // идет слияние, пока есть хоть один элемент в каждой последовательности
  while (pos1 <= split && pos2 <= ub) {
    if (a[pos1] < a[pos2])
      temp[pos3++] = a[pos1++];
    else
      temp[pos3++] = a[pos2++];
  }
  // одна последовательность закончилась -
  // копировать остаток другой в конец буфера
  while (pos2 <= ub)   // пока вторая последовательность непуста
    temp[pos3++] = a[pos2++];
  while (pos1 <= split)  // пока первая последовательность непуста
    temp[pos3++] = a[pos1++];
 
  // скопировать буфер temp в a[lb]...a[ub]
  for (pos3 = 0; pos3 < ub-lb+1; pos3++)
    a[lb+pos3] = temp[pos3];
 
  delete []temp;
}
 
void mergeSort(int *A, int lb,int  ub)
{
    long split;                   // индекс, по которому делим массив
    if (lb < ub)
    {                // если есть более 1 элемента
        split = (lb + ub)/2;
       // cout << split<<endl;
        mergeSort(A, lb, split);       // сортировать левую половину
        mergeSort(A, split+1, ub);// сортировать правую половину
        merge(A, lb, split, ub);    // слить результаты в общий массив
    }
}
Взять отсюда: http://algolist.manual.ru/sort/merge_sort.php
0
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
22.01.2014, 06:58  [ТС]
я видела эту страницу,но там речь идет о массивах, а не о массивах списков (
0
176 / 144 / 70
Регистрация: 01.05.2012
Сообщений: 414
22.01.2014, 13:03
Ульяниус, аналогично можно сделать слияние списков в массив)
0
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
23.01.2014, 07:55  [ТС]
Конечно можно, но вот если ты это делаешь в первый раз, препод не помогает, а самой оч тяжко... Некому вопросы задавать, до всего приходится доходить самой, что-то оч долго получается, так бы спросила и все ...
Я в новой версии уже объявила двусвязный список и отдельно очередь, а и b у меня двусвязные списки, с0 и с1 - очередь, как последние засунуть в динамический массив ума не приложу... Вообще туго лабораторка продвигается ((((

Добавлено через 12 часов 31 минуту
egor2116, _script_, посмтрите пожалуйста мои наработки, может какие мысли возникнут. Компилятор меня ругает на чем свет стоит, говорит я как то не так работаю с очередью, ему не нравится..
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include  <stdio.h>
#include  <conio.h>
#include <time.h>
#include  <stdlib.h>
#include <alloc.h>
#include <math.h>
#define ESC 27
typedef struct SPIS
{
 int data;
 struct SPIS *prev;
 struct SPIS *next;
}spis ;
typedef struct QUEUE
{
 int data;
 struct QUEUE *prev; 
 struct QUEUE *next; 
} queue;
 
void create (int *mas, int n);*
void separation (spis *S,
         spis **a,
         spis **b,
         int n);
void init (queue*);
spis *head, *tail;*
queue *first, *last;
 
void main ()
 {
  long i, //*®¬Ґа *ЄвЁў*®© ®зҐаҐ¤Ё
  n,//Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ў бЇЁбЄҐ
  sum,
  p,//ЇаҐ¤Ї®«*Ј*Ґ¬л© а*§¬Ґа бҐаЁЁ
  q,//д*ЄвЁзҐбЄЁ© а*§¬Ґа бҐаЁЁ ў бЇЁбЄҐ *
  r,//д*ЄвЁзҐбЄЁ© а*§¬Ґа бҐаЁЁ ў бЇЁбЄҐ b
  m;//⥪г饥 Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ў бЇЁбЄ*е a Ё b
  int *mas;  //¬*ббЁў ¤«п д®а¬Ёа®ў**Ёп Ї®б«Ґ¤®ў*⥫м*®бвЁ зЁбҐ«
  char key;
  spis *S,*a,*b; //а*Ў®зЁҐ бЇЁбЄЁ
  queue *c0,*c1;
  do
  {
   sum=0;
   randomize();
   clrscr ();
   fflush(stdin);
   printf("\n ‚ўҐ¤ЁвҐ §**зҐ*ЁҐ n - Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¬*ббЁў*   ");
   scanf("%d",&n);
   mas=(int*)malloc(n*sizeof (int));
   for (i=0; i<n; i++)
    {
     mas[i]=random(100);
     sum+=mas[i]; //Ї®¤бзҐв Є®*ва®«м*®© б㬬л
    }
   create(mas,n);
   separation (head,&a,&b,n);
   p=1;
   while (p<n)
   {
    //Ё*ЁжЁ*«Ё§*жЁп ®зҐаҐ¤Ґ©
    init(c0);
    init(c1);
 
    i=0;
    m=n;
    while (m>0)
    {
     if (m>=p)
      q=p;
     else
      q=m;
     m=m-r;
     //б«Ёп*ЁҐ
     i=1-i;
    }
   a=c0.first;
   b=c1.head;
   p=2*p;
   }
   c0.tail->next=NULL;
   S=c0.head;
 
 
   printf("\n ‘®авЁа®ўЄ* ¬Ґв®¤®¬ ?Ґ««*");
   printf("\n „«п б«гз*©*®© Ї®б«Ґ¤®ў*⥫м*®бвЁ:");
  // Shell (mas,n,sum);
   printf(" „«п гЇ®а冷зҐ**®© Ї®б«Ґ¤®ў*⥫м*®бвЁ:");
  // Shell (mas,n,sum);
   free(mas);
   puts ("\n ‚ўҐбвЁ ¤агЈ®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¬*ббЁў*? (ЌҐв=Esc)");
   key=getch();
  }
  while (key!=ESC);
 }
 
void create (int *mas, int n)
{
 int i;
 spis *p,
  *pred;//гЄ*§*⥫м ** ЇаҐ¤л¤гйго бвагЄвгаг
 pred=NULL;
 for (i=0;i<n;++i)
 {
  p=(spis*) malloc(sizeof(spis));
  p->data=mas[i];
  p->prev=pred;
  if (pred!=NULL)//Ґб«Ё бЇЁб®Є *Ґ Їгбв
   pred->next=p;//*®ўл© н«Ґ¬Ґ*в бв**®ўЁвбп б«Ґ¤гойЁ¬
  else //Ґб«Ё бЇЁб®Є Їгбв
   head=p;//б®§¤**ЁҐ ЇҐаў®Ј® н«Ґ¬Ґ*в* бЇЁбЄ*
  pred=p;
 }
 tail=p;
 tail->next=NULL;
}
 
void separation (spis *S,
         spis **a,
         spis **b,
         int n)
{
  spis *k,*p;long i;
  *a=S;
  *b=S->next;
  n=0;
  k=*a;
  p=*b;
  while(p!=NULL)
  {
   ++n;
   k->next=p->next;
   k=p;
   p=p->next;
  }
 
}
 
 void init  (queue *c)
 {
    c=(queue*) malloc(sizeof(queue);
    first=NULL;
    c=first;
    last=NULL;
    c=last;
 }
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
23.01.2014, 14:58
Сделать задание это пол дела, для начала нужно понять что нужно делать вот за этим и обратитесь к преподу.
По делу
Что это ?
C++
1
void create (int *mas, int n);*
Что это
C++
1
spis *head, *tail;*
Что это ?
C++
1
queue *first, *last;
0
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
23.01.2014, 18:10  [ТС]
Цитата Сообщение от egor2116 Посмотреть сообщение
Сделать задание это пол дела, для начала нужно понять что нужно делать вот за этим и обратитесь к преподу.
В целом то я понимаю что делать, я в инициации списков путаюсь. Сейчас это сделать не просто я на ДО, пишу им а им пофиг, так обидно, деньги получается берут а консультаций не дают, им некогда у них сессия, им пофиг, что я не понимаю чего либо, поэтому приходится сидеть и пытаться что-то понять самой, ну или надеяться на сайты где помогут формучани...

Цитата Сообщение от egor2116 Посмотреть сообщение
По делу

Что это ?

void create (int *mas, int n);
Это я передаю в функцию данные с указателем динамический массив случайных чисел для того, чтобы скопировать данные из массива в структуру, потом, в другой функции, я выполняю разделение структуры на структуры a b. А дальше стопор

Цитата Сообщение от egor2116 Посмотреть сообщение
Что это
C++
1
spis *head, *tail;*
Это объявление указателей на начало и конец списка двусвязного
Цитата Сообщение от egor2116 Посмотреть сообщение
Что это ?

queue *first, *last;
Это объявление указателей на начало и конец очереди, пробовала их объявлять не так, а через объявление новой структуры, но наверное делала это не правильно, потому что компилятор ругался. Пробовала объявлять структуру С0 и С1 отдельно, но тоже как то криво не получилось.
Щас компилятор ругается на этапе инициализации очередей С0 и С1, наверное я ее как то не так провожу...
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
24.01.2014, 13:09
1. Обязательно писать на С ?
2. Обязательно ли использовать указатели для построения очереди ?
3. Мое предыдущее сообщение
C++
1
void create (int *mas, int n);*
Что это за звездочки в конце обьявления функции, опечатка при копировании кода или нет ?
4. Отформатируйте код непонятно где какие функции кому принадлежат.
5. Выложите сообщения ошибок.
0
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
24.01.2014, 14:21  [ТС]
Обязательно на Си и обязательно с использованием очереди, а на счет указателей, то не обязательно.
Звездочка. это тут опечатка моя.
На счет форматирования функций я не поняла...
А вот с ошибками. вручную набирать ооочень долго, я вам код выложу, скопируйте его и запустите, там вылезет куча ошибок...
И всетаки остается одна большущая проблема. как из структур сделать массив структур.
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include  <stdio.h>
#include  <conio.h>
#include <time.h>
#include  <stdlib.h>
#include <alloc.h>
#include <math.h>
#define ESC 27
typedef struct SPIS
{
 int data;
 struct SPIS *next; // гЄ*§*⥫м ** Ї®б«Ґ¤гойго бвагЄвгаг
} spis ;
void create (int n);//б®§¤**ЁҐ бЇЁбЄ*
void separation (spis *,
         spis **a,
         spis **b,
         int n);//а*§¤Ґ«Ґ*ЁҐ*/
void Mergesort(spis **a, spis **b);
spis *head, *tail;//гЄ*§*⥫м ** **з*«® Ё Є®*Ґж бЇЁбЄ*
 
void main ()
 {
  long n;//Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ў бЇЁбЄҐ
  char key;
  spis *a,*b; //а*Ў®зЁҐ бЇЁбЄЁ
  head=NULL;
  tail=NULL;
  do
  {
   randomize();
   clrscr ();
   fflush(stdin);
   printf("\n ‚ўҐ¤ЁвҐ §**зҐ*ЁҐ n - Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¬*ббЁў*   ");
   scanf("%d",&n);
   create(n);
   separation (head,&a,&b,n);
   Mergesort (&a, &b);
 
 
   puts ("\n ‚ўҐбвЁ ¤агЈ®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¬*ббЁў*? (ЌҐв=Esc)");
   key=getch();
  }
  while (key!=ESC);
 }
 
void create (int n)
{
 long i,sum=0;
 spis *p;
 int *mas;  //¬*ббЁў ¤«п д®а¬Ёа®ў**Ёп Ї®б«Ґ¤®ў*⥫м*®бвЁ зЁбҐ«
 mas=(int*)malloc(n*sizeof (int));
   for (i=0; i<n; i++)
    {
     mas[i]=random(100);
     sum+=mas[i]; //Ї®¤бзҐв Є®*ва®«м*®© б㬬л
    }
 for (i=0;i<n;++i)
 {
  p=(spis *)malloc(sizeof(spis));//ўл¤Ґ«пҐ¬ Ї*¬пвм ¤«п ЇҐаў®© §*ЇЁбЁ
  p->data=mas[i];
  p->next=NULL;
  if (head==NULL) //б®§¤*Ґ¬ ЇҐаўл© н«Ґ¬Ґ*в ®зҐаҐ¤Ё
  {
   head=p;//Ґб«Ё ®зҐаҐ¤м б®бв®Ёв Ё§ ®¤*®Ј® н«Ґ¬Ґ*в*, в® §**зҐ*Ёп гЄ*§*⥫Ґ©
   tail=p;//** ЇҐаўл© Ё Ї®б«Ґ¤*Ё© н«Ґ¬Ґ*вл б®ўЇ*¤*ов
  }
  else
  {
   tail->next=p;//*®ўл© н«Ґ¬Ґ*в ЇаЁб®Ґ¤Ё*пҐвбп Є Ї®б«Ґ¤*Ґ¬г н«Ґ¬Ґ*вг ®зҐаҐ¤Ё
   tail=p;//*®ўл© н«Ґ¬Ґ*в ®Ўкпў«пҐвбп Ї®б«Ґ¤*Ё¬
   }
  }
  free(mas);
}
 
 
 
void separation (spis *head,
         spis **a,
         spis **b,
         int n)
{
  spis *S;long i;
  S=head;
  *a=S;
  *b=S->next;
  n=0;
  while((*b)!=NULL)
  {
   ++n;
   (*a)->next=(*b)->next;
   *a=*b;
   *b=(*b)->next;
  }
 
}
 
void Mergesort (spis **a, spis **b)
{
 long i, //*®¬Ґа *ЄвЁў*®© ®зҐаҐ¤Ё
  n,//Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ў бЇЁбЄҐ
  p,//ЇаҐ¤Ї®«*Ј*Ґ¬л© а*§¬Ґа бҐаЁЁ
  q,//д*ЄвЁзҐбЄЁ© а*§¬Ґа бҐаЁЁ ў бЇЁбЄҐ *
  r,//д*ЄвЁзҐбЄЁ© а*§¬Ґа бҐаЁЁ ў бЇЁбЄҐ b
  m;//⥪г饥 Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ў бЇЁбЄ*е a Ё b
  char key;
  spis *S, *c0,*c1; //а*Ў®зЁҐ бЇЁбЄЁ
  p=1;
   while (p<n)
   {
    //Ё*ЁжЁ*«Ё§*жЁп ®зҐаҐ¤Ґ©
    c0->(*head)=NULL;
    c1->head=NULL;
 
    i=0;
    m=n;
    while (m>0)
    {
     if (m>=p)
      q=p;
     else
      q=m;
     m=m-r;
     //б«Ёп*ЁҐ
     i=1-i;
    }
   a=(*c0)->head;
   b=c1->head;
   p=2*p;
   }
   (c0->tail)->next=NULL;
   S=c0->head;
 
}
 
 
void init  (spis **c)
 {
    spis *C;
    C=*c;
    head=NULL;
    tail=NULL;
    head=C;
    tail=C;
 }
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
24.01.2014, 14:27
как из структур сделать массив структур
Так же как и из всего остального
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  [ТС]
не понимаю как можно конкретно две структуры с0 и с1 объединить в массив . Можете написать?
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
24.01.2014, 15:01
При выполнении вашего кода у меня выдало таки ошибки
давайте разбирать
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  [ТС]
egor2116, Вот вся проблема, что я не понимаю, как объявить их массивом. как потом этот массив передать в функцию... На самом деле у меня не выводит описания ошибок в функциях, но с этим разберусь, гласное этот массив,

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

Добавлено через 53 секунды
и все остальные ошибки это одна ошибка -я не правильно обращаюсь с указателями, а как правильно не пойму
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
29.01.2014, 11:31
я не правильно обращаюсь с указателями, а как правильно не пойму
Почитайте про указатели.
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2014, 11:31
Помогаю со студенческими работами здесь

Задачка на сравнение двух очередей
Собственно условие: Описать функцию, которая проверяет на равенство две очереди. Запутался в самом начале при объявлении struct Quewe...

Стек на базе двух очередей
Мне нужно сделать стек на базе двух очередей, но я не совсем понял как это все устроено, объясните пожалуйста. Стек и очередь по...

Синхронизация двух очередей в мультипотоковом приложении
Приветствую. Сейчас пишу по работе сервер для работы с WEB Service ГИС ЖКХ. Суть проблемы, с которой не могу разобраться: Есть класс...

Составить из элементов двух очередей третью, упорядоченную по невозрастанию
задача: Даны две очереди целых чисел, элементы которых упорядочены по неубыванию. Составить из их элементов третью очередь, упорядоченную...

Перемножить соответственные элементы двух очередей и организовать третью очередь
Имеется файл с натуральными числами, не большими 100. Создать одну очередь однозначных чисел, а вторую очередь двузначных чисел....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru