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

Кольцевой список - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
22.04.2010, 08:35     Кольцевой список #1
Пытаюсь написать программу,но столкнулся с проблемой.Написал ф-ю создания списка из n элементов,объявил её тип сначала как void ,выдал ошибку пробовал int тоже ошибка.Причем если тоже самое написать без ф-ии все нормально работает.Программирую в среде Dev c++
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
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void makelist(List *&head,int n)
{
   List *p;
   int k;
   head=new List;
   head->next=head;
   head->pred=head;
   cout<<"vvedite elementbl spiska"<<endl;
   cin>>k; 
   while (n!=0)    
   {     
         p=new List;
         p->info=k;
         p->next=head;
         p->pred=head->pred;
         head->pred=p;
         p->pred->next=p;
         cin>>k;
         n--;  
   }  
}
 
int main()
{
    struct List
    {
       int info;
       List * pred,* next;
    };
   List* head; 
   int n; 
   cout<<"vvedite chislo elementov spiska"<<endl;
   cin>>n;
   
   makelist(head,n)     
 
   getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2010, 08:35     Кольцевой список
Посмотрите здесь:

кольцевой список C++
C++ Кольцевой список
C++ Двухсвязный Кольцевой Список
кольцевой список C++
C++ кольцевой список. STL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NickA
 Аватар для NickA
35 / 34 / 2
Регистрация: 28.04.2009
Сообщений: 67
22.04.2010, 08:40     Кольцевой список #2
Может так должно быть...
C++
1
void makelist(List *head,int n)
Если нет то так попробовать...
C++
1
void makelist(List **head,int n)
при вызове
C++
1
makelist(&head,n);
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
22.04.2010, 08:50  [ТС]     Кольцевой список #3
Нет,так тоже не работает
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
22.04.2010, 11:09     Кольцевой список #4
C
1
2
3
4
5
6
7
8
9
void makelist(List *&head,int n)// так нельзя &head  
Она не видет ваш struct List;
исп так;
struct List {
List *next;
List *prev;
int info;
};
void makeList(List **elem,int number);
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
22.04.2010, 11:28  [ТС]     Кольцевой список #5
Исправил.
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
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
struct List
    {
       int info;
       List *next;
       List *pred;
    };
int makelist(List **head,int n)
{
   List *p;
   int k;
   head=new List;
   head->next=head;
   head->pred=head;
   cout<<"vvedite elementbl spiska"<<endl;
   cin>>k; 
   while (n!=0)    
   {     
         p=new List;
         p->info=k;
         p->next=head;
         p->pred=head->pred;
         head->pred=p;
         p->pred->next=p;
         cin>>k;
         n--;  
   }  
}
 
int main()
{
    
   List* head; 
   int n; 
   cout<<"vvedite chislo elementov spiska"<<endl;
   cin>>n;
   
   makelist(&head,n);     
}
Теперь на тип ф-ии не ругается,но почему-то все ,что написано внутри неё компилятору определённо не нравится.
Хотя препод давал именно так.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
22.04.2010, 12:08     Кольцевой список #6
в 14 строке явно ошибка . нет возвр значения в конце.сам цикл по списку не смотрел .Исп debug строками.
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
22.04.2010, 12:15  [ТС]     Кольцевой список #7
Почему в 14 строке ошибка?
Создаем сторожа,новый элемент списка
head=new List
NickA
 Аватар для NickA
35 / 34 / 2
Регистрация: 28.04.2009
Сообщений: 67
23.04.2010, 12:14     Кольцевой список #8
Работа с head должна быть примерно такой:
C++
1
2
3
   (*head)=new List;
   (*head)->next=(*head);
   (*head)->pred=(*head);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2010, 16:52     Кольцевой список
Еще ссылки по теме:

Двусвязный кольцевой список C++
Кольцевой двусвязный список C++
Кольцевой список однозвязный C++

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

Или воспользуйтесь поиском по форуму:
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
23.04.2010, 16:52  [ТС]     Кольцевой список #9
На самом деле необходимо было просто вынести структуру в начало,а остальное все правильно было
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
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
struct List
    {
       int info;
       List * pred,* next;
    };
void makelist(List *&head,int n)
{
   List *p;
   int k;
   head=new List;
   head->next=head;
   head->pred=head;
   cout<<"vvedite elementbl spiska"<<endl;
   cin>>k; 
   while (n!=0)    
   {     
         p=new List;
         p->info=k;
         p->next=head;
         p->pred=head->pred;
         head->pred=p;
         p->pred->next=p;
         cin>>k;
         n--;  
   }  
}
 
int main()
{    
   List* head; 
   int n; 
   cout<<"vvedite chislo elementov spiska"<<endl;
   cin>>n;
   
   makelist(head,n)     
 
   getch();
}
Yandex
Объявления
23.04.2010, 16:52     Кольцевой список
Ответ Создать тему
Опции темы

Текущее время: 16:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru