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

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

Восстановить пароль Регистрация
 
миклух
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 13
03.06.2012, 20:34     Кольцевые списки #1
люди добрые, написал программу, теперь надо в ней сделать эти три списка в один кольцевой, но при этом вывод данных должен остаться таким же? как это реализовать? перепишите пожалуйста...

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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
 
using namespace std;
 
struct list  // список
{
 int   x;   // число в элементе списка
 list* next;  // указатель на следущий элемент списка
};
 
struct mixlist  // в целом вся структура
{   
 list* one;  // первый список
 list* two;  // второй список
 list* three; // третий список
};
 
void add(list* &t, int k)  // добавление в список числа
{
 if (t==NULL)  // если список пуст
 {
 t=new list;  // выделяем память под новый элемент
 t->x=k;    // записываем число
 t->next=NULL;  // указатель на следующий пуст, так как он последний в списке
 }
 else  // если список не пуст
 { 
 list* tmp; 
 tmp=t;
 while (tmp->next!=NULL) // достигаем конца списка
 tmp=tmp->next;
 tmp->next=new list; // выделяем память под новый элемент
 tmp->next->next=NULL;  // указатель на следующий пуст, так как он последний в списке
 tmp->next->x=k;  // записываем число
 }
}
 
void add(mixlist* &s, int k) // добавление числа в структуру
{
 if (k%2==0)   // если число делится на 2 
 add(s->one,k);  // то добавляем в первый список
 if (k%3==0)  // если число делится на 3
 add(s->two,k);  // то добавляем во второй список
 if (k%2!=0 && k%3!=0)  // если число не делится ни на 2, ни на 3
 add(s->three,k);  // то добавляем в третий список
}
 
void fill(mixlist* &s)  // заполнение структуруры числами с консоли пока 0 не введено
{
 int k=-1;
 
 cout<<"для окончания ввода, введите 0\n\n";
 
 while (k!=0)
 {
 cout<<"введите целое число: ";
 cin>>k;
 if (k!=0)
 add(s,k);  // добавляем (вызов фунции) если не 0
 }
}
 
 
void show(mixlist* s)  // вывод на экран трех списков
{
 list* tmp;
 
 tmp=s->one; // во временную переменную адрес начала первого списка
 
 cout<<"Список №1: ";
 
 if (tmp!=NULL) // если не пуст этот список
 {
 cout<<tmp->x<<" "; // вывод элемента на консоль
 while (tmp->next!=NULL) // и далее пока есть следующий элемент
 {
 tmp=tmp->next;  // переходим к следующему
 cout<<tmp->x<<" ";  // и выводим его число на консоль
 }                       // аналогично для еще двух списков
 }
 else cout<<"список пуст";
 cout<<endl;
 
 tmp=s->two;   
 
 cout<<"Список №2: ";
 
 if (tmp!=NULL)
 {
 cout<<tmp->x<<" ";
 while (tmp->next!=NULL)
 {
 tmp=tmp->next;
 cout<<tmp->x<<" ";
 }
 }
 else cout<<"список пуст";
 cout<<endl;
 
 
 tmp=s->three;
 
 cout<<"Список №3: ";
 
 if (tmp!=NULL)
 {
 cout<<tmp->x<<" ";
 while (tmp->next!=NULL)
 {
 tmp=tmp->next;
 cout<<tmp->x<<" ";
 }
 }
 else cout<<"список пуст";
 cout<<endl;
 
}
 
void del(list* t)  // удаление списка
{
 if (t!=NULL)
 {
 list* tmp;
 
 while (t->next!=NULL)
 {
 tmp=t;   // копию в tmp
 t=t->next;  // переход к следующему элементу
 delete tmp;  // удаляем через копию предыдущий элемент
 }
 
 delete t;
 }
}
 
void del(mixlist* s)  // удаление трех списков структуры 
{
 del(s->one);
 del(s->two);
 del(s->three);
}
 
 
void main()
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
 char c;
 
 cout<<"\n\nПрограмма сортирует список введенный пользователем в 3 других.\n№1 заполняется четными числами\n№2 заполняется кратными трем\n№3 заполняется оставшимися числами\n";
 
 mixlist* s;  // указатель на структуру
 s=new mixlist;  // выделяем память под нее
 
 s->one=NULL;  // пока списки все пустые
 s->two=NULL;
 s->three=NULL;
 
 fill(s);  // заполняем
 cout<<"\n";
 show(s);   // показываем на консоль
 del(s);   // удаляем списки в ней
 delete s;  // удаляем ее саму
 getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2012, 20:34     Кольцевые списки
Посмотрите здесь:

C++ C++ списки
C++ Списки в С++
списки C++
C++ Списки
C++ Списки
C++ Списки
C++ Электронные станции: радиальные, кольцевые и смешанные виды связей между ними
Списки, как склеить списки между собой? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
03.06.2012, 21:57     Кольцевые списки #2
Цитата Сообщение от миклух Посмотреть сообщение
перепишите пожалуйста...
Если ты это сделал сам то проблем с реализацией кольцевого списка у тебя не должно быть. Если не знаешь что это - вперёд на википедию, ничего особо сложного после обычного односвязного списка ты там не должен найти.
миклух
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 13
04.06.2012, 05:19  [ТС]     Кольцевые списки #3
Цитата Сообщение от Gepar Посмотреть сообщение
Если ты это сделал сам то проблем с реализацией кольцевого списка у тебя не должно быть. Если не знаешь что это - вперёд на википедию, ничего особо сложного после обычного односвязного списка ты там не должен найти.
я знаю как это должно выглядеть. в конце первого списка оказатель на следующий, и так далее, с помощью которого осуществляется доступ. но чёрт возьми, у меня не получается переделать
Yandex
Объявления
04.06.2012, 05:19     Кольцевые списки
Ответ Создать тему
Опции темы

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