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

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

Войти
Регистрация
Восстановить пароль
 
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
#1

Списки! - C++

16.09.2011, 21:59. Просмотров 747. Ответов 13
Метки нет (Все метки)

Объясните пожалуйста про списки с нуля. Как добавлять элементы, как удалять и что да как вообщем???? А то прочитал в книгах, Павловская, Дейтел и роберт Седжвик...ничего не понял вообще((( Пожалуйста объясните!. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2011, 21:59     Списки!
Посмотрите здесь:

Списки C++ - C++
Уважаемые! Препод задал написать линейный, линейный дважды связанный и линейный цикличный списки с любым количеством элементов для каждого....

Списки в С++ - C++
С(40) Создать класс в котором нужно подсчитать минимальный елемент массива С і его номер. Заранее благодарю!!! вот я накинул, но она не...

Списки!!! - C++
Помогите ПЛИЗЗЗ!!! И если можно добавьте комментарии к каждой строке!!!:) Добавить новый элемент после заданного; элемент задан...

списки - C++
напишите теорию о списках

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

списки - C++
Организуйте помещение вводимых чисел в список, так чтобы получился список, упорядоченный по возрастанию помогите,пожалуйста,прошу...

Списки - C++
Работа со списками( объединение, удаление, вставка и.т.п). при запуске выдает ошибки. :-| устала уже с ней( С++, Builder 6 ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
snajper_ro
54 / 54 / 17
Регистрация: 14.09.2011
Сообщений: 398
16.09.2011, 22:15     Списки! #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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
//---------------------------------------------------------------------------
//бауся
#include <vcl.h>
#pragma hdrstop
#include <conio.h >
#include <iostream.h>
 
//---------------------------------------------------------------------------
 
struct list{
int info ;
list *next , *last ;
} *end ,*begin ,*t ;
 
void create(list** ,list** ,int,bool,int) ;
void view(list* ,int ,list** ,list**) ;
void del_all(list** ) ;
void task(list**,list**  ) ;
 
 
 
#pragma argsused
int main(int argc, char* argv[])
{
int quantity = 5, i , elem ,kod , endorbegin ;
bool firstelem = true ,flag = true ;
randomize() ;
while(true)
{
   cout << "\n\n 1:create and add , 2:viewing ,3:delete ,4:task ,0:exit   :" ;
        kod = getch() ;
                kod = kod - 48 ;
        switch(kod)
        {
        case 1:
 
        
        cout <<" \nInput a quantity the element: " ;
                cin >> quantity ;
                         cout <<" \nbegin - input 0  or end - any key:" ;
                                endorbegin = getch() ;
                                          endorbegin -= 48 ;
                                                    cout <<"    add - " << endorbegin ;
 
        for(i = 0;i < quantity; i ++ )
        {
                elem = random( 20 ) -10 ;
 
                                          cout <<"\n    elem = "<< elem  ;
 
 
 
 
                create(&begin ,&end ,elem ,flag,endorbegin) ;
                flag = false ;
                            firstelem = false ;
 
         }
 
 
 
        break ;
 
        case 2:
        if(begin !=NULL)
        {
        cout <<" \nView in the begin - input 0 or in the - input any key" ;
                   endorbegin = getch() ;
                            endorbegin -= 48 ;
                                 if(endorbegin == 0 )
                                t = begin ;
                        else t = end ;
           view(t ,endorbegin ,&end ,&begin ) ;
        }
 
        break ;
 
        case 3:
 
        del_all(&begin ) ;
        end = begin ;
        flag = firstelem = true ;
 
 
        break ;
        case 4 :
        if( begin != NULL )
        {
        task(&begin ,&end ) ;
        }
 
        break ;
 
        case -21:
 
        return 0 ;
        }
}
}
//---------------------------------------------------------------------------
void create(list** begin ,list** end ,int elem ,bool flag,int endorbegin)
{
if(flag){
  t = new list ;
  t -> info = elem ;
  t -> next = t -> last = NULL ;
  *begin = *end = t ;
  }
  else{
    t = new list ;
 t -> info = elem ;
 
 if(endorbegin == 0 )            //begin
 {
  t -> last = NULL ;
  t -> next = *begin ;
  (*begin) -> last = t ;
  *begin = t ;
 
 
 }
 else                                     //end
 {
 t -> next = NULL ;
 t -> last = *end ;
 (*end) -> next = t ;
 *end = t ;
 
 }
 
 
  }
}
 
void view(list *t , int endorbegin ,list **end ,list** begin )
{
cout <<endl ;
if( endorbegin == 0)
        cout <<"\n                The view begin \n" ;
else cout <<"\n            The viem end  \n" ;
while( t != NULL )
{
 
 cout <<t ->info  << endl ;
if(endorbegin == 0 )
t = t -> next ;
else t = t -> last ;
}
 
 
}
 
void del_all(list** begin )                  //delete
{
t = *begin ;
 
while(*begin != NULL)
{
 
t = t ->next  ;
delete begin ;
*begin = t ;
 
}
 
}
 
void task(list** begin ,list** end )                                 //task
{
cout << " task " ;
int check = 0 ;
 
     list * t = *begin ;
     list *tmin ,*tmax ;
     cout<<endl;
     for( check = 0 ; t!=NULL ; check ++ ,t = t ->next )     //
     {
 
           if( check %2 == 1 )
           {
              tmin = t ->last ;
               tmax = t ->next;
               delete t ;
               if(tmax !=NULL){
 
               tmin ->next =tmax ;
               tmax ->last =tmin ;
               t = tmin ;
               }
               else {
               tmin ->next =NULL;
               t = tmin ;
               }
 
           }
 
      *end = t ;
     }
}
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
16.09.2011, 22:19     Списки! #3
список - динамическая структура данных, где каждый элемент (звено) содержит значение и указатель на следующий элемент
т.е.
C++
1
2
3
4
5
6
template <typename value_type>
struct link
{
value_type value; // значение, которое хранится в звене
link* next; // указатель на след. элемент списка;
};
соот-но список можно представить как
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
template <typename value_type>
class list
{
link<value_type>* root; // начальный элемент списка;
public:
// конструктор
list() : root()
{
}
 
// добавление звена
void add_link(const value_type& value)
{
// если нет еще звеньев в списке
if (!root)
root = new link<value_type>(value);
else
{
current = root;
// ищем конец списка, туда добавлять элемент будем
while (current->next)
current = current->next;
 
current->next = new link<value_type>(value);
}
}
// удаление 
void delete_link(link<value>* value)
{
if (!root || !value)
return;
 
link<value>* current = root;
if (current == value)
{
root = current->next;
delete current;
}
 
while (current->next != value)
current = current->next;
 
if (current->next == value)
{
current->next = current->next->next;
delete current->next;
}
}
};
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
17.09.2011, 13:56  [ТС]     Списки! #4
А можете все это объяснить??? Мне препод задали задачу, создать список и внести туда "abc" и потом добавить между "b" и "c", "f". Как это вообще все сделать?
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
17.09.2011, 15:20     Списки! #5
KOPC1886,

C++
1
2
3
4
std::list<char> lis = {'a', 'b', 'c'};
lis.insert(lis.begin() + 2, 'f');
std::copy(lis.begin(), lis.end(), std::ostream_iterator<char>(std::cout));
std::cout << std::endl;
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
17.09.2011, 15:44     Списки! #6
KOPC1886, тебе для решения задачи нужно создать свой тип данных (список), или можно пользоваться готовыми (stl)?
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.09.2011, 15:46     Списки! #7
Nameless One, конечно же свой)
на stl списки задание посложнее будет
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
17.09.2011, 18:14  [ТС]     Списки! #8
Свой список нужно создать, а я ничего вообще не понял в списках. Что там за стрелки -> ? как и что вообще???
Zverit
Уничтожитель печенек
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
17.09.2011, 18:55     Списки! #9
Цитата Сообщение от KOPC1886 Посмотреть сообщение
Что там за стрелки -> ?
-> тоже самое, что и разыменование указателя.

Не по теме:

И если вы это не знаете, я думаю вам еще рано разбираться со списками, подучите более ранние темы!

KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
17.09.2011, 19:11  [ТС]     Списки! #10
Мне препод дал задачу, которую я описал выше. Мне в понедельник надо ее здать и желательно разобраться как и что???? Помогите пожалуйста.
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
17.09.2011, 19:13     Списки! #11
KOPC1886, Книжку в зубы и читать. Еще больше суток осталось.
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
17.09.2011, 20:08  [ТС]     Списки! #12
Я прочитал про списки в Дейтеле, Павловской и Роберте Седжвике. Но к сожалению ничего не понял(((
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
17.09.2011, 21:45     Списки! #13
KOPC1886, А я и не про списки говорю. Когда идет вопрос про косвенную адресацию в духе "а что это?" - значит вам надо не про списки читать. А вообще что-нибудь по С/С++ причем с самого начала.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 22:50     Списки!
Еще ссылки по теме:

Списки - C++
Помогите пожалуйста с задачей: В списке L найти такой элемент &quot;y&quot; (если существует), что &quot;y&quot; больше всех предыдущих и меньше всех...

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

Списки - C++
Доброго времени суток. Прошу помощи с задачей на списки. Определить входит ли список L1 в список L2. Рабочая версия программы...

списки С++ - C++
необходимо создать очередь(итеративный метод) с постановкой эл-ов в начало списка помогите плизз!!!! заранее спасибо:)

Списки - C++
помогите пожалуйста решить задачу! сформировать список из натуральных чисел. Найти среднее арифмитическое элементов списка и выяснить,...


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

Или воспользуйтесь поиском по форуму:
snajper_ro
54 / 54 / 17
Регистрация: 14.09.2011
Сообщений: 398
18.09.2011, 22:50     Списки! #14
кто ищет тот находит
Вложения
Тип файла: rar 2.rar (488.5 Кб, 19 просмотров)
Yandex
Объявления
18.09.2011, 22:50     Списки!
Ответ Создать тему
Опции темы

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