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

Упорядоченный односвязный список - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите с задачами на функции в С++ http://www.cyberforum.ru/cpp-beginners/thread428336.html
Помогите пожалуйста с двумя задачами: 1)Определить сумму элементов до минимального элемента. Описать в виде отдельной функции количество элементов до максимального элемента массива. 2)Заменить элементы столбца их абсолютным значением. Вывести на экран количество отрицательных элементов в столбце. В виде отдельной функции выполнить действие для столбцов у которых последний элемент имеет...
C++ Объединение 2-х очередей Здравствуйте. Подскажите пожалуйста, как можно объединить 2 не пустые очереди? http://www.cyberforum.ru/cpp-beginners/thread428324.html
Задача на структуры C++
моя попытка решения но я в нем не уверен int main() { struct {struct{char naim; char rezh;}film; struct {char fio; char rol;}act; struct{char naimkin;char adres; struct{int date;int time;}kino; struct{int sum;}mes; }teatr; struct{char naimch; int date1; int time1;}kanal; }card; strcpy(card.film.naim,"Avatar");
C++ Кто знает как из DEVc++ транслировать в C++?
Есть программа написанная в Dev, которая не работает в Visual C++. Как данную программу перевести в Си? В чем их особенности? Вот сама программа, если не трудно, то переведите в С++, ну или хотя бы подскажите как это сделать мне. буду очень признателен) #include <iostream> #include <cmath> #include <string> #include <cstring> #include <cstdio> #include <cstdlib> //#include<stdlib.h>
C++ проблема с закрытием экрана http://www.cyberforum.ru/cpp-beginners/thread428282.html
Вот код: #include <iostream> int main() { using namespace std; int carrots; cout << "how many carrots do you have?" << endl; cin >> carrots;
C++ Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался... Доброго времени суток, уважаемые форумчане. У меня такая проблемка. Возвращаемый функцией результат, а это у меня определенный элемент массива при определенном условии, при использовании в цикле for/while прибавляется(стакается) с предыдущим возвращаемым результатом функции. Как, а главное почему это происходит? И как это устранить? Ниже тот самый "кот": #include <iostream> #include... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
15.01.2012, 12:06     Упорядоченный односвязный список
Цитата Сообщение от aquila Посмотреть сообщение
Собсна говоря, сам список готов (исходный код отсюда и брался ).
Слабый код, не очень подходит для задачи.
Если список сортированный, то накладываются некоторые ограничения на данные. Например, нельзя менять данные напрямую.

Из спортивного интересу. Без удаления элементов из списка. Для удаления элементов надо написать поиск элемента и удаление элемента из списка по итератору.
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
#include <iostream>
 
struct NodeBase {
  NodeBase *next;
  NodeBase() : next(this) {}
  NodeBase(NodeBase *next_) : next(next_) {}
};
 
template <class T>
struct NodeType : public NodeBase {
  NodeType(NodeBase *next_, const T &data_) : NodeBase(next_), data(data_) {}
  T data;
};
 
template <class T>
class SortedList {
 public:
  typedef NodeType<T> Node;
  class Iterator {
   public:
    Iterator(const Iterator &iterator) : node_(iterator.node_) {}
    Iterator(const NodeBase *node) : node_(node) {}
    Iterator &operator++() { node_ = node_->next; return *this; }
    const T &operator*() const { return static_cast<const Node*>(node_)->data; }
    const T &operator->() const { return static_cast<const Node*>(node_)->data; }
    bool operator==(const Iterator &other) { return other.node_ == node_; }
    bool operator!=(const Iterator &other) { return !(*this == other); }
   private:
    const NodeBase *node_;
  };
  SortedList() : base_() {}
  SortedList(const SortedList &other) : base_() {
    for (Iterator i = other.begin(); i != other.end(); ++i)
      insertSorted(*i);
  }
  ~SortedList() { clear(); }
  SortedList &operator=(const SortedList &other) {
    if (this != &other) {
      for (Iterator i = other.begin(); i != other.end(); ++i)
        insertSorted(*i);
      clear();
    }
    return *this;
  }
  void insertSorted(const T &data) {
    NodeBase *prev = &base_;
    NodeBase *next = base_.next;
    while (next != &base_ && static_cast<Node*>(next)->data < data) {
      next = next->next;
      prev = prev->next;
    }
    Node *node = new Node(next, data);
    prev->next = node;
  }
  Iterator begin() const { return Iterator(base_.next); }
  Iterator end() const { return Iterator(&base_); }  
  bool isEmpty() const {
    return base_.next == &base_;
  }
  void clear() {
    while (base_.next != &base_) {
      NodeBase *node = base_.next->next;
      delete base_.next;
      base_.next = node;
    }
  }
 private:
  NodeBase base_;
};
 
SortedList<int> operator*(const SortedList<int> &list, int multiplier) {
  SortedList<int> result;
  for (SortedList<int>::Iterator i = list.begin(); i != list.end(); ++i)
    result.insertSorted(*i * multiplier);
  return result;
}
 
template <class T>
std::ostream &operator<<(std::ostream &stream, const SortedList<T> &list) {
  for (typename SortedList<T>::Iterator i = list.begin(); i != list.end(); ++i)
    stream << *i << " ";
  return stream;
}
 
int main(int argc, char *argv[]) {
  SortedList<int> a;
  a.insertSorted(5);
  a.insertSorted(5);
  a.insertSorted(7);
  a.insertSorted(6);
  a.insertSorted(4);
  a.insertSorted(4);
  a.insertSorted(8);
  std::cout << a << std::endl;
  std::cout << (a * 2) << std::endl;
  std::cout << (a * -1) << std::endl;
  std::cout << std::endl;
}
 
Текущее время: 10:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru