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

Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 5.00
Вадим3777
0 / 0 / 0
Регистрация: 05.01.2012
Сообщений: 53
08.03.2013, 00:02     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #1
Решить задачу с использованием STL.

Разработать шаблон класса для работы с односвязным списком. Тип элементов задается как параметр шаблона. Написать тестовую программу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2013, 00:02     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком
Посмотрите здесь:

C++ Построить класс для работы с односвязным списком. Создать два списка: List1 и List2. Проверить, содержатся ли элементы списка List1 в списке List2 в у
C++ Разработать класс с набором функций для управления односвязным списком
Построить класс для работы с односвязным списком C++
Построить класс для работы с односвязным списком C++
C++ Шаблон класса для работы с комплексными числами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
09.03.2013, 16:28     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #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
//http://www.cyberforum.ru/cpp-beginners/thread803103.html
#include <iostream>
#include <cassert>
#include <cstdlib>
#include <ctime>
 
template <class T>
class TStack
{
   protected:
      struct TNode
      {
         T value;
         TNode* next;
      }* stack;
 
   public:
      TStack(): stack(NULL) { ; }
 
      ~TStack()
      {
         Clear();
      } 
 
      TStack<T>& Push(T value)
      {
         TNode* node = new TNode();
         node->value = value;
         node->next = stack;
 
         stack = node;
 
         return *this;
      }
 
      T Pop()
      {
         assert(stack != NULL);
 
         T value = stack->value;
 
         TNode* node = stack;
 
         stack = stack->next;
 
         delete node;
 
         return value;
      }
 
      T Top() const
      {
         assert(stack != NULL);
 
         return stack->value;
      }
 
      bool IsNull() const
      {
         return (stack == NULL);
      }
 
      void Clear()
      {
         for (; !IsNull(); Pop());
      }
 
      friend std::ostream& operator << (std::ostream& os, const TStack<T>& stack)
      {
         typename TStack<T>::TNode* node = stack.stack;
 
         for (; node; node = node->next)
         {
            os << node->value << " ";
         }
 
         return os;
      }
};
 
int main()
{
   srand(time(NULL));
 
   TStack<int> list1;
   TStack<char> list2;
 
   for (size_t i = 0; i < 10; ++i)
   {
      list1.Push(rand() % 100);
      list2.Push('a' + (rand()%26));
   }
 
   std::cout << list1 << std::endl
             << list2 << std::endl;
 
   system("pause");
 
   return 0;
}
Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком

Исходник + бинарник: program.7z
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
09.03.2013, 16:38     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #3
Ну если
Цитата Сообщение от Вадим3777 Посмотреть сообщение
Разработать шаблон класса для работы с односвязным списком.
Цитата Сообщение от Вадим3777 Посмотреть сообщение
Решить задачу с использованием STL.
то вот:
C++
1
2
3
4
5
#include <list>
 
template<typename T>
class mylist: public std::list<T>{
};
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
09.03.2013, 17:07     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #4
Croessmah, одна нестыковка - стандартный список - двусвязный. Можно использовать forward_list из с++11.

anmartex, ТС нужен список а не стек.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
09.03.2013, 18:59     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #5
Toshkarik, для справки: стек - частный случай односвязного списка (распределение данных по принципу LIFO). Я хочу сказать, что стек и есть список. Также односвязный список можно организовать как очередь (распределение данных по принципу FIFO). Но в задании ничего не сказано о типе списка, поэтому, чтобы не заморачиваться с хвостами и головами в своём примере я предложил стек.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
09.03.2013, 19:10     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #6
Цитата Сообщение от anmartex Посмотреть сообщение
Но в задании ничего не сказано о типе списка
Цитата Сообщение от Вадим3777 Посмотреть сообщение
односвязным списком
Для справки:
Wiki:
В информатике, свя́зный спи́сок — базовая динамическая структура данных, состоящая из узлов, каждый из которых содержит как собственно данные, так и одну или две ссылки («связки») на следующий и/или предыдущий узел списка. Принципиальным преимуществом перед массивом является структурная гибкость: порядок элементов связного списка может не совпадать с порядком расположения элементов данных в памяти компьютера, а порядок обхода списка всегда явно задаётся его внутренними связями.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
09.03.2013, 19:19     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #7
Toshkarik, и что? Ткните мне пальцем на ту строчку которая подтвердит, что стек ни есть односвязный список.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
09.03.2013, 19:38     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #8
anmartex, выбирайте любое из определений стека - Google: стек информатика

Например, из 3-ей ссылки:
Стек — динамическая структура данных, представляющая из себя упорядоченный набор элементов, в которой добавление новых элементов и удаление существующих производится с одного конца, называемого вершиной стека.
...
Стек можно организовать на базе любой структуры данных, где возможно хранение нескольких однотипных элементов и где можно реализовать определение стека: линейный массив, типизированный файл, однонаправленный или двунаправленный список. В нашем случае наиболее подходящим для реализации стека является однонаправленный список, причём в качестве вершины стека выберем начало этого списка.
Добавлено через 7 минут
anmartex, Вы вообще понимаете разницу между списком и стеком? Как Вы будете, допустим, удалять элемент из середины контейнера? Или у Вас особый стек?
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
09.03.2013, 19:43     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #9
Связный список - структура данных, состоящая из элементов, содержащих помимо собственных данных ссылки на следующий и/или предыдущий элемент списка. С помощью списков можно реализовать такие структуры данных как стек и очередь.
Взято по ссылке.

Т.е. любой односвязный список может представлять из себя либо СТЕК (LIFO) или ОЧЕРЕДЬ (FIFO).

Добавлено через 2 минуты
Цитата Сообщение от Toshkarik Посмотреть сообщение
Как Вы будете, допустим, удалять элемент из середины контейнера?

Для этого реализую итераторы. А вообще список это контейнер последовательного, а не прямого доступа
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
09.03.2013, 19:43     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #10
Цитата Сообщение от anmartex Посмотреть сообщение
Т.е. любой односвязный список может представлять из себя либо СТЕК (LIFO) или ОЧЕРЕДЬ (FIFO).
Но не наоборот. Стек не может представлять из себя список.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
09.03.2013, 19:45     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #11
Цитата Сообщение от Toshkarik Посмотреть сообщение
Стек не может представлять из себя список.
Тьфу ты, опять двадцать пять. В данной реализации это и есть список.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
09.03.2013, 19:55     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #12
Цитата Сообщение от anmartex Посмотреть сообщение
Связный список это АТД с последовательным доступом, а не как массив, который является контейнером прямого доступа
При чем здесь это?
Вы можете удалить произвольный элемент из списка, который по определенному условию Вам "не понравился", в стеке же в Вашем распоряжении только вершина.

Цитата Сообщение от anmartex Посмотреть сообщение
В данной реализации это и есть список.
Да какая разница, как реализован стек? Хоть с помощью списка, хоть с помощью массива, он все равно не заменит список, потому что не является им. Стек это стек, список это список. Вы не сможете добавить в начало стека новый элемент когда в нем уже есть хотя бы один другой элемент. В список же - элементарно.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
09.03.2013, 19:59     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #13
Toshkarik, давайте порешим так, напишите здесь свою реализацию списка (помогите парню). Я вас плюсую, и на этом закончим. Устраивает?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
09.03.2013, 20:07     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #14
anmartex, да меня и так все устраивало, я лишь не хотел, чтоб ТСа ввергли в заблуждение.

Цитата Сообщение от anmartex Посмотреть сообщение
напишите здесь свою реализацию списка
Задание размыто, где и каким образом использовать STL непонятно.

Цитата Сообщение от anmartex Посмотреть сообщение
Я вас плюсую, и на этом закончим.
Я на форуме не из-за "плюсов". Я лишь пытался донести суть. Вы, скорей всего, останитесь при своем мнении, но возможно ТСу это как то поможет разобраться.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2013, 21:13     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком
Еще ссылки по теме:

C++ Построить класс для работы с односвязным списком
C++ Разработать шаблон класса для реализации односвязного списка
C++ Разработать шаблон класса для работы со стеком реализованным в виде связного списка

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

Или воспользуйтесь поиском по форуму:
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
09.03.2013, 21:13     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком #15
Toshkarik, кстати, я только сейчас прочитал, что с использованием STL

Добавлено через 1 час 3 минуты
Toshkarik, всё я понял о чём вы, и вы правы!
Yandex
Объявления
09.03.2013, 21:13     Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком
Ответ Создать тему
Опции темы

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