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

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

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

STL List - C++

04.11.2012, 09:20. Просмотров 3415. Ответов 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 (C++):

Работа с STL list + пропись List.h - C++
Здравствуйте! Помогите, пожалуйста, разобраться с STL list. Нужно сделать программу в которой будет содержаться класс Student, прописать...

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zvoronz
271 / 238 / 21
Регистрация: 29.05.2012
Сообщений: 889
04.11.2012, 09:28 #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  [ТС] #3
Спасибо zvoronz =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2012, 09:35
Привет! Вот еще темы с ответами:

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

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

STL vector,list - C++
У меня 2 вопроса: 1) можете рассказать,как подробно работает reverse_iterator?Создал вектор,хочу его распечатать в обратном порядке...

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


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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