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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.92
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
#1

STL List - C++

04.11.2012, 09:20. Просмотров 3360. Ответов 2
Метки нет (Все метки)

Вот в чем проблема, была дана задача, решить которую надо было с помощью 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
Посмотрите здесь:

List STL - C++
В общем нужно создать класс STL c помощью list: CStudent.h #include <string> using namespace std; enum number_type{G1, G2,...

STL list - C++
как вставить элемент в середину списка list STL? float list_insert_rand(int num) { srand (time(NULL)); int rand_num, rand_pos; ...

STL list - C++
Доброго времени суток, пока имею поверхностное представление о алгоритмах STL и функциях для контейнеров, но есть задача: требуется...

Реализация list из STL - C++
Можете скинуть реализацию класса list из STL.

stl::list erase() - C++
вот такой код есть, но не работает. как подправить? list<int> ls; list<int>::iterator it; for(int i=0; i<5; i++) { ...

Работа с STL list - C++
Есть некий каталог с 3 переменными (string,string,int), который нужно хранить в list Как я понимаю есть 2 решения хранения. 1....

STL List Iterator - C++
Как в STL list из итератора получить номер элемента, на который он указывает? Вот пример с вектором: cliext::vector<int>::iterator it; ...

Программа с List из STL - C++
Здравствуйте ребята. Прошу помочь мне с моим кодом. ошибок вроде нету, но не работает удаление по дате и поиск файла с наибольшим...

Удаление list STL - C++
Из списка, содержащего 100 тыс. элементов, удалить все элементы путем многократного удаления элемента из случайной позиции. Случайная...

STL>>list<_Ty> - C++
Подскажите, пожалуйста. Я сейчас пытаюсь вникнуть в суть контейнеров, их свойства и функции. Так вот, создал я двун. список с помощью list,...

STL List - где он применяется? - C++
Учу STL, пришел к list. Во первых, я не нашел нормальных уроков/примеров по нем. По мере его изучения из разных источников мне он показался...

Вопрос по контейнеру STL: list - C++
Есть пара нубских вопросов по контейнеру STL: list и связанному с ним итератору: 1) В программе есть переменная имеющая тип list&lt;string&gt;....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zvoronz
271 / 238 / 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
Ответ Создать тему
Опции темы

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