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

Построить класс для работы с односвязным списком - 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, int &b )
C++ Правильно ли выполнено задание http://www.cyberforum.ru/cpp-beginners/thread791718.html
Написать функцию, которая принимает на вход вектор строк и выводит их суммарную длину. #include <iostream> #include <vector> #include <string> size_t size_vector_string(std::vector<std::string> vector); int main()
C++ требуетсяя изменить программу так что бы она считывала значения int а не double вродибы у меня всё получилось кроме sqrt я изменил double n на double ns и под ним написал int n = ns; и получилось что выводило только целые числа но квадратный корень всё равно выводится не так как нужно!! подскажите пожалуйста как правельно написать!! и если не трудно напишите пожалуйста ещё пару примеров!! рабочих я их поизучаю!! Спасибо большое!! #include "stdafx.h" #include... подробнее

Показать сообщение отдельно
anmartex
...
1701 / 1194 / 495
Регистрация: 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
Просмотров: 208

Размер: 2.4 Кб

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