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

STL List - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.92
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
04.11.2012, 09:20     STL List #1
Вот в чем проблема, была дана задача, решить которую надо было с помощью Deque и List, Deque надобыло оформить через STL, а List написать ручками... С деком вопросов не возникло, а вот лист... Не могу сообразить, с чего начать то... Лист надо написать полностью с нуля. Вот задание (я не прошу его мне решать = ) ):
Из числовой последовательности найти удалить все элементы, меньшие, чем A*X, где X – среднее арифметическое трех наибольших элементов последовательности, A – задаваемый пользователем коэффициент.
Кто нибудь, обьясните как вообще работать с листом =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 09:20     STL List
Посмотрите здесь:

C++ STL vector,list
C++ STL>>list<_Ty>
C++ stl::list erase()
C++ STL list
List STL C++
STL list C++
C++ Удаление list STL
Работа с STL list + пропись List.h C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zvoronz
 Аватар для zvoronz
270 / 237 / 21
Регистрация: 29.05.2012
Сообщений: 889
04.11.2012, 09:28     STL List #2
Связный список представляет собой последовательность элементов (узлов), соединенных в цепочку. Последовательность может содержать любое количество элементов, поскольку при создании списка используется динамическое распределение памяти.
Каждый элемент связного списка представляет собой отдельный объект, содержащий поле для хранения информации и указатель на следующий элемент списка (а в случае двусвязного списка в объекте хранится также указатель на предыдущий элемент).

Структура связного списка в C++ во вложении.

Для представления элемента списка, хранящего, например, символы, можно использовать структуру:
C++
1
2
3
4
5
struct node
{
char value;
node* next;
};
Поле value используется для хранения, собственно, символа, next – указатель на следующий элемент списка. При работе со списками на практике чаще всего приходится выполнять следующие операции:
- создание / уничтожение списка
- добавление элемента
- удаление элемента
- поиск нужного элемента в списке
Для выделения памяти под элементы можно использовать оператор new.
Последовательность действий при создании списка: выделить память под 1-й элемент. В поле value записать значение. В поле next – 0:

C++
1
2
3
node *top = new node;
top->value = ’s’;
top->next = NULL;
Добавление элемента в список: сохранить адрес последнего элемента во временной переменной; создать новый элемент, записать в него значение, в поле next – указатель на предыдущий элемент.

C++
1
2
3
4
node *prev = top;
top = new node;
top->value = ‘d’;
top->next = prev;   //связать с предыдущим
Удалять элементы можно с помощью оператора delete. Его формат: delete <указатель>.
Стек (stack) – это последовательность некоторых однотипных элементов. Данные в стеке организованы по принципу «последним вошел – первым вышел». Это означает, что добавлять и удалять элементы стека можно только с одного конца стека. Доступный конец стека называется его вершиной, операция добавления элемента в стек называется помещением в стек, а операция извлечения из стека – выталкиванием.
Вектор (vector) – это последовательность элементов, доступ к которым осуществляется по индексу. Вектор можно наращивать по мере необходимости, и он осуществляет контроль значений индексов. Добавлять элементы можно только в конец вектора. Вектор предназначен для хранения элементов одного типа.
Очередь (queue) – последовательность однотипных элементов. Данные в очереди, в отличие от стека, организованы по принципу «первым вошел – первым вышел». Добавляются элементы в конец очереди, считываются – с начала очереди.
Пример. Создать класс List для хранения списка символов.
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
struct node
{
char value;
node* next;
};
class List
{
private:
node *top;  // указатель на последний занесенный в список элемент
int size;   // размер списка
public:
List() : top (NULL), size(0)
{}
void Push(char c)
{
if (size == 0)
{
top = new node;
top ->value = c;
top ->next = NULL;
//………
}
//………
}
// другие функции
};
Каждому пользователю Всемирной сети необходимо тестирование скорости интернет соединения, чтобы быть уверенным в своем провайдере.
Изображения
 
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
04.11.2012, 09:35  [ТС]     STL List #3
Спасибо zvoronz =)
Yandex
Объявления
04.11.2012, 09:35     STL List
Ответ Создать тему
Опции темы

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