Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
1

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

22.04.2010, 08:35. Просмотров 2053. Ответов 8
Метки нет (Все метки)

Пытаюсь написать программу,но столкнулся с проблемой.Написал ф-ю создания списка из 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();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2010, 08:35
Ответы с готовыми решениями:

Реализовать кольцевой список. Как закольцевать список обычный?
Помогите пожалуйста реализовать кольцевой список. Я так понимаю, он может быть двусвязным и...

кольцевой список
Граждане - товарищи, нужна помощь! Задание- Описать процедуру, которая формирует очередь Queue,...

Кольцевой список
Что нужно поменять,чтобы новые елементы добавлялись не в конец списка, а в начало? void...

Кольцевой двунаправленный список
Дали задачу на практике. Пусть L обозначает кольцевой двунаправленный список с заглавным...

8
35 / 34 / 17
Регистрация: 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);
0
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
22.04.2010, 08:50  [ТС] 3
Нет,так тоже не работает
0
158 / 157 / 47
Регистрация: 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);
1
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
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);     
}
Теперь на тип ф-ии не ругается,но почему-то все ,что написано внутри неё компилятору определённо не нравится.
Хотя препод давал именно так.
0
158 / 157 / 47
Регистрация: 29.04.2009
Сообщений: 637
22.04.2010, 12:08 6
в 14 строке явно ошибка . нет возвр значения в конце.сам цикл по списку не смотрел .Исп debug строками.
0
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
22.04.2010, 12:15  [ТС] 7
Почему в 14 строке ошибка?
Создаем сторожа,новый элемент списка
head=new List
0
35 / 34 / 17
Регистрация: 28.04.2009
Сообщений: 67
23.04.2010, 12:14 8
Работа с head должна быть примерно такой:
C++
1
2
3
   (*head)=new List;
   (*head)->next=(*head);
   (*head)->pred=(*head);
0
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
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();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2010, 16:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Кольцевой односвязный список
Собственно что это и с чем его едят! Как реализовать, если это что-то страшное! Задача : сделать...

Двухсвязный Кольцевой Список
Дано вот такое задание:В двухсвязном кольцевом списке определить минимальный и максимальный...

Кольцевой односвязный список
Реализовал класс для работы со списком студентов( использовал кольцевой односвязный список). Для...

Двунаправленный кольцевой список
Ребята, спасайте. Очень много дают информации, всё не успеваю освоить. Потихоньку стараюсь...


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

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

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