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

Реверс двусвязного списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Калькулятор Z-1. Укажите на ошибку в программе к задаче http://www.cyberforum.ru/cpp-beginners/thread1242229.html
Уважаемые форумчане, укажите пожалуйста на ошибку в программе. Пишу программу к задаче, валится на 10 тесте (Wrong Answer). Подскажите, пожалуйста, что не так. Условие задачи: Имя входного файла: calcz.in Имя выходного файла: calcz.out Ограничение по времени: 2 секунды Ограничение по памяти: 64 мегабайта Компания Z готовится к выпуску своего супер пупер мега калькулятора Z-1. Ме-
C++ Проверить можно ли ходом короля из одной клетки попасть в другую Делать было нечего решил все простые задачи перерешать с сайта. Ближе к делу: Поле шахматной доски определяется парой чисел (a, b), каждое от 1 до 8, первое число задает номер столбца, второе – номер строки. Заданы две клетки. Определите, может ли шахматный король попасть с первой клетки на вторую за один ход. Формат входных данных: Даны 4 целых числа от 1 до 8 каждое, первые два задают... http://www.cyberforum.ru/cpp-beginners/thread1242224.html
C++ Как удалять определенные значения из массива?
Пишу программу по одной задаче, в которой требуется удалить элементы, значение которых меньше среднего арифметического динамического массива. Думал, элемент возможно удалить с помощью delete", но это не работает. В гугле нашел несколько методов, но описаны они были как-то криво, в итоге я ничего не понял. Так как удалять элементы из простого и динамического массива? Объясните подробно
C++ Fopen не видит путь к файлу
#include <stdio.h> #include <iostream> #include <fstream> #include <string> #include <vector> #include <map> typedef std::map<std::string, std::string> mapss; // An unsigned char can store 1 Bytes (8bits) of data (0-255)
C++ Почему visual studio 2008 не видит директиву #include <iostream> http://www.cyberforum.ru/cpp-beginners/thread1242200.html
Здравствуйте! Помогите пожалуйста с решением проблемы. Проблема стоит в том что мой компилятор не видит #include <iostream> и требует ввести "stdafx.h" но если я ее ввожу то у меня перестает видить cin и cout
C++ Для каждой открывающей скобки найти позицию ей соответствующей закрывающей скобки Доброго времени суток. Подскажите пожалуйста алгоритм или путь к решению задачи, используя СТЕК Дана ПСП, ваша задача для каждой открывающей скобочки найти позицию ей соответствующей закрывающей скобочки. пример входные данные (())() выходные подробнее

Показать сообщение отдельно
gray_fox
What a waste!
 Аватар для gray_fox
1246 / 1129 / 54
Регистрация: 21.04.2012
Сообщений: 2,354
Завершенные тесты: 3
15.08.2014, 01:21     Реверс двусвязного списка
как вариант
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
#include <iostream>
#include <utility>
 
 
template<typename T>
class list {
 
   struct list_node;
   struct list_node_base;
 
 
public:
   void reverse() {
      std::swap(head.prev, head.next);
      for (list_node_base * p = head.prev; p != &head; p = p->prev) {
         std::swap(p->prev, p->next);
      }
   }
 
   bool empty() const {
      return &head == head.next;
   }
   
   void push_back(T const& value) {
      head.insert_before(new list_node(value));
   } 
   
   template<typename F>
   void apply(F f) const {
      for (list_node_base * p = head.next; p != &head; p = p->next) {
         f(p->get_data());
      }
   }
 
   ~list() {
      while (!empty()) {
         head.next->erase();
      }
   }
 
 
private:
   struct list_node_base {
 
      list_node_base() : prev(this), next(this) {}
 
      void insert_before(list_node_base * const what) {
         prev->next = what;
         what->prev = prev;
         
         this->prev = what;
         what->next = this;
      }
 
      void erase() {
         prev->next = next;
         next->prev = prev;
         
         delete static_cast<list_node *>(this);
      }
 
      T & get_data() {
         return static_cast<list_node *>(this)->data;
      }
      T const& get_data() const {
         return static_cast<list_node const*>(this)->data;
      }
 
      list_node_base * prev;
      list_node_base * next;
   };
 
   struct list_node : list_node_base {
    
      list_node(T const& data) : data(data) {}
 
      T data;
   };
 
   list_node_base head;
};
 
 
int main() {
   list<int> instance;
   
   for (int i = 0; i != 5; ++i) {
      instance.push_back(i);
   }
   
   auto const printer = [](int const value) {
      std::cout << value << ' ';
   };
   
   instance.apply(printer);
   std::cout << std::endl;
   
   instance.reverse();
   
   instance.apply(printer);
   std::cout << std::endl;
}
http://ideone.com/GBZvde
 
Текущее время: 08:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru