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

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

Войти
Регистрация
Восстановить пароль
 
миклух
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 13
#1

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

03.06.2012, 20:34. Просмотров 789. Ответов 2
Метки нет (Все метки)

люди добрые, написал программу, теперь надо в ней сделать эти три списка в один кольцевой, но при этом вывод данных должен остаться таким же? как это реализовать? перепишите пожалуйста...

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++
Привет, нужно написать програму, которая в кольцевом однонаправленом списке заменит все числа кратные 3 на ноль. Есть код, подскажите где...

Кольцевые списки на базе двунаправленных списков - C++
Всем привет! Помогите решить задачу: Пусть L обозначает кольцевой двунаправленный список с включенным заглавным звеном. Написать функцию...

Электронные станции: радиальные, кольцевые и смешанные виды связей между ними - C++
Нужно написать начало проги, помогите пожалуйста! Существует 15 станции, и 60 вариантов в каждом варианте выбраны 6 станции из 15 и в...

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

списки с++ - C++
Помогите! Организовать список. Информационная часть должна содержать целые числа. Определить количество элементов с заданным ключом в...

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

Списки - C++
Даны 2 списка( из файлов) в третий список поместить те элементы из списка 1, для которых в списке 2 найдутся меньшие элементы! Прошу помочь...

C++ списки - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;list&gt; using namespace std; int main(void) { list&lt; int &gt; l,...

Списки в С++ - C++
#include&lt;iostream.h&gt; #include &quot;time_1.h&quot; #include&lt;time.h&gt; #include&lt;windows.h&gt; char* Rus (const char* text); class List { ...

Списки - C++
Разработать ниже приведенную иерархию классов с объявлением объектов конечного производного класса с помощью конструкорив по умолчанию и...

Списки - C++
Здравствуйте, не могу в написать программу, обеспечивающую работу с двунаправленным нециклическим списком, где можно добавлять/удалять...

списки - C++
написать функцию, удаляющую первый отрицательный элемент списка.


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

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

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