Форум программистов, компьютерный форум, киберфорум
Наши страницы

Построить класс для работы с односвязным списком - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дано предложение. Найти два одинаковых слова http://www.cyberforum.ru/cpp-beginners/thread791820.html
Дано предложение. В нем только два слова одинаковые. Найти эти слова.
C++ Есть диапазон целых чисел, в котором каждое число встречается дважды, кроме одного. Найдите его за линейное время. сижу мучаюсь 30 минут, не как не могу составить алгоритм работы программы, подумывал нахождения через пары, но это очень долго.. вот задание: Есть диапазон целых чисел, в котором каждое число... http://www.cyberforum.ru/cpp-beginners/thread791804.html
Сгенерировать число "1" или "2" C++
Как сделать с помощью функции rand генерацию числа в диапазоне от 0 до 1? Просто если пишу rand() % 1 то всё время выдаёт только одно и тоже число. Как мне известно малые биты менее случайны чем...
C++ Объясните кусок программы (подсчет кол-ва букв в слове)
#include "stdafx.h" #include <iostream> #include <cstring> void out (int *num, char (*word), int &b) { printf ("\n"); for (int i=0; i<b; i++) printf ("%s ", word]); } void fperest(int &a,...
C++ Правильно ли выполнено задание http://www.cyberforum.ru/cpp-beginners/thread791718.html
Написать функцию, которая принимает на вход вектор строк и выводит их суммарную длину. #include <iostream> #include <vector> #include <string> size_t...
C++ требуетсяя изменить программу так что бы она считывала значения int а не double вродибы у меня всё получилось кроме sqrt я изменил double n на double ns и под ним написал int n = ns; и получилось что выводило только целые числа но квадратный корень всё равно выводится не так... подробнее

Показать сообщение отдельно
anmartex
...
1708 / 1201 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
22.02.2013, 06:30
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
template <class T>
class TListIterator;
 
template <class T>
class TList
{
   public:
      typedef TListIterator<T> Iterator;
 
   protected:
      friend TListIterator<T>;
 
      struct TNode
      {
         T value;
         TNode* next;
      }  *list;
 
   public:
      TList(): list(NULL) { ; }
 
      void Push(T value)
      {
         TNode* node = new TNode;
         node->value = value;
         node->next = list;
 
         list = node;
      }
 
      T Pop()
      {
         TNode* node = list;
         list = list->next;
 
         T value = node->value;
         delete node;
 
         return value;
      }
 
      bool Empty() const
      {
         return (list == NULL);
      }
 
      void Clean()
      {
         while (Empty() == false)
         {
            Pop();
         }
      }
};
 
template<class T>
class TListIterator
{
   protected:
      typename TList<T>::TNode* node;
 
   public:
      TListIterator(const TList<T>& list): node(list.list) { ; }
 
      bool End()
      {
         return (node == NULL);
      }
 
      TListIterator& operator ++ ()
      {
         node = node->next;
 
         return *this;
      }
 
      T operator * ()
      {
         return node->value;
      }
};
 
template <class T>
std::ostream& operator << (std::ostream& os, const TList<T>& list)
{
   for (typename TList<T>::Iterator it = list; !it.End(); ++it)
   {
      os << *it << " ";
   }
 
   return os;
}
 
 
int main()
{
   ::srand(::time(NULL));
 
   TList<int> list1;
 
   for (int i = 0; i < ::rand() % 20 + 10; ++i)
   {
      list1.Push(::rand() % 10);
   }
 
   std::cout << "list1: " << list1 << std::endl;
 
   TList<int> list2;
 
   int max = 0, index = 1;
   for (TList<int>::Iterator it = list1; !it.End(); ++it)
   {
      if (max < *it)
      {
         list2.Clean();
         max = *it;
      }
      if (max == *it)
      {
         list2.Push(index);
      }
      index++;
   }
 
   std::cout << "list2: " << list2 << std::endl;
 
   return 0;
}
Название: list.png
Просмотров: 210

Размер: 2.4 Кб

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