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

Одноправленный линейный список - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с calloc и free в C++ http://www.cyberforum.ru/cpp-beginners/thread445989.html
Всем добрый день!! Уважаемые программисты посмотрите пожалуйста, корректно ли я использую эти функции для динамического выделения памяти, прога вроде работает, но есть сомнения, вот код: struct Item { unsigned int numberSite; //номер участка std::string address; unsigned int numberOfVoters;//количество поголосовавших Item *next;// указатель на следующий элемент списка }; class...
C++ Вывод в файл Всем привет, вот такая проблемка возникла. Хочу вывести матрицы в файл, но не получается...Файл оказывается пустым, как исправить?) #include <iostream> #include <fstream> #include <cmath> #include <vector> #include <iomanip> #include <stdio.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread445988.html
Задача на функции C++
Помогите решить задачи на функции. Имеются две связанных друг с другом задачи. Первая: Описать процедуру Minmax (A, B), записывающую в переменную А минимальное из значений А и В, а в переменную В - максимальное из этих значений (А и В - вещественные параметры, являющиеся одновременно входными и выходными). Использую четыре вызова этой процедуры, найти минимальное и максимальное из чисел А, B,...
Изменить программу C++
Спасайте :) - завтра нужно сдать все отчёты. Осталась одна программа: Общая постановка. Пользовательский класс String должен содержать необходимые элементы-данные, которые создаются в динамической области памяти. • Конструктор для создания строк: String (…); • Деструктор: ~String(); • Метод ввода исходной строки: Set(); • Метод печати: void print(…); Код методов – вне пространства...
C++ Динамический массив (классов) http://www.cyberforum.ru/cpp-beginners/thread445955.html
Вот такой вопрос, почему так? #include <iostream> #include <string> using namespace std; class primer { public: primer (int _number, char _s1)
C++ Динамическая строка и перегрузка операций Всем доброго дня!!!Если есть минутка, помогите сделать эти задания!буду очень благодарен!! Вот сама задача!!!! 1. Длина L четная, то выделяется подстрока со второго пробела. подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
14.02.2012, 13:25     Одноправленный линейный список
Идея, в целом, такова.
Создавать ноду, которая сама себя разместит. Для этого ей необходимо знать, за какой нодой она идет.
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
#include <iostream>
 
template <class T>
class OneLinkedList {
 public:
  struct Node {
    Node() : next(this) {}
    Node(Node *after, const T &data_) : next(after->next), data(data_) {
      after->next = this;
    }
    Node *next;
    T data;
  };
  OneLinkedList() : base(new Node()) {}
  ~OneLinkedList() {
    clear();
    delete base;
  }
  void pushFront(const T &value) {
    new Node(base, value);
  }
  void pushBack(const T &value) {
    new Node(getLastNode(), value);
  }
  const T &get(size_t n) const {
    Node *result = base->next;
    while (n--) result = result->next;
    return result->data;
  }
  bool empty() const {
    return base == base->next;
  }
  size_t size() const {
    size_t result = 0;
    for (Node *node = base; node->next != base; node = node->next)
      ++result;
    return result;
  }
  void clear() {
    while (!empty()) {
      Node *next = base->next;
      base->next = next->next;
      delete next;
    }
  }
  T &operator[](size_t n) {
    Node *result = base->next;
    while (n--) result = result->next;
    return result->data;
  }
  const T &operator[](size_t n) const {
    return get(n);
  }
 private:
  Node *getLastNode() {
    Node *result = base->next;
    while (result->next != base) result = result->next;
    return result;
  }
  OneLinkedList(const OneLinkedList&);
  OneLinkedList &operator=(const OneLinkedList&);
  Node *base;
};
 
int main(int argc, char *argv[]) {
  OneLinkedList<int> a;
  for (int i = 0; i < 10; ++i)
    if (i % 2)
      a.pushBack(i);
    else
      a.pushFront(i);
  for (size_t i = 0; i < a.size(); ++i)
    std::cout << (a[i] = a[i] + 1) << " ";
  std::cout << std::endl;
  for (size_t i = 0; i < a.size(); ++i)
    std::cout << a[i] << " ";
  std::cout << std::endl;
}
 
Текущее время: 03:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru