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

Динамический список - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать два объекта и определить минимальное значение из чисел http://www.cyberforum.ru/cpp-beginners/thread164452.html
Описать класс , который хранит значение двух чисел и функцию для определения минимального из них , числа должны быть с ограниченым доступом , функция с открытым доступом . Создать два объекта и определить минимальное значение из чисел .
C++ Классы: круг, квадрат, прямоугольник Описать классы соответсвующие кругу , квадрату и прямоугольнику . В каждом из классов реализовать функцию подсчета площади фигуры , сравнить площади фигур какая из них больше . http://www.cyberforum.ru/cpp-beginners/thread164451.html
Сеть Dos <-> Windows C++
Есть ли у кого исходники или какая-нить информация по организации сети межу станциями на ОС DOS и Windows? Спасибо.
C++ Описать функцию, которая удаляет все минимальные элементы из списка
Помогите пожалуйста. Я студент второго курса. (Не программист ни разу >.<") Мне нужна помощь в написании программы. Завтра уже нужно принести результат. Вот сама задача: Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. В составе программы описать функцию, которая удаляет все минимальные элементы из списка. Очень прошу помощи!
C++ Создание службы в Visual Studio http://www.cyberforum.ru/cpp-beginners/thread164178.html
Доброго всем времени суток! Есть проблема: Нужно портировать на С++ код написанного на Си-Шарпе приложения-службы. Именно так, чтобы программа была в натив-кодах. Попробовал писать в С++ Билдере - почему-то глюк на глюке (версия 2009). Как можно создать проект службы в Visual Studio именно в натив-коде, а не в CLR? Заранее спасибо! Добавлено через 2 минуты Сорри, вопрос исчерпан. Ответ...
C++ Программа запускается с задержкой Почему в Dev-C++ компиляция программы завершается успешно, а при попытки запустить эту программу черное окно появляется на 1 секунду и все?? что не так??:( подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.09.2010, 11:09     Динамический список
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
Кроме того, по условиям задачи вам не нужно создавать свой тип списка, а всего лишь сформировать оный.
Сдаётся мне - это всё-таки задание на конструирование велосипедов. Судя по представленному коду там и намёка на стандартные контейнеры нет...

Цитата Сообщение от Em1ly Посмотреть сообщение
если честно, я не понимаю, как это выкладывать кодом
Ну вот как два листинга выложили, так и нужно...
Вот Вам Ваш список
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
#include <iostream>
#include <stdexcept>
 
class List {
    // структура элемента списка
    struct Node {
        int nValue;
        Node * pNext;
        Node(int val) : nValue(val), pNext(NULL) {}
    };
    Node * first, * last; // указатели на первый и последний элементы
    List(const List&); // закрытый конструктор копирования - не нужно нам один список в другой копировать
public:
    // конструктор по умолчанию
    List() : first(NULL), last(NULL) {}
    // деструктор
    ~List() {
        while ( first ){
            last = first->pNext;
            delete first;
            first = last;
        }
    }
    // возвращает true если список пустой
    bool empty() const {
        return first == NULL;
    }
    // добавление элемента в список
    void add(int val){
        Node * pNode = new Node(val);
        // если список пустой, вставить первый элемент
        if ( ! first ){
            first = pNode;
            last = first;
        }
        // иначе добавить элемент в конец списка
        else {
            last->pNext = pNode;
            last = pNode;
        }
    }
    // максимальное значение в списке
    int maxValue() const {
        int maxVal;
        Node * pNode;
        
        // если список пустой, выйти с сообщением об ошибке
        if ( empty() )
            throw std::runtime_error("Empty list!");
        
        maxVal = first->nValue;
        for ( pNode = first->pNext; pNode != NULL; pNode = pNode->pNext )
            if ( maxVal < pNode->nValue )
                maxVal = pNode->nValue;
        
        return maxVal;
    }
    // поиск элемента с заданным значением. возвращает позицию элемента в списке
    // начиная с 1, или 0, если элемент с заданным значением не найден
    int findElement(int val) const {
        int currentPos, foundPos;
        Node * pNode;
        
        // если список пустой, выйти с сообщением об ошибке
        if ( empty() )
            throw std::runtime_error("Empty list!");
        
        foundPos = 0;
        for ( currentPos = 1, pNode = first; pNode != NULL; ++currentPos, pNode = pNode->pNext ){
            if ( pNode->nValue == val ){
                foundPos = currentPos;
                break;
            }
        }
        return foundPos;
    }
};
 
int main(){
    int val, cnt;
    List list;
    
    std::cout << "Number of elements in list: ";
    std::cin >> cnt;
    for ( int i = 0; i < cnt; ++i ){
        std::cout << "Element #" << ( i + 1 ) << ": ";
        std::cin >> val;
        list.add(val);
    }
    
    if ( list.empty() ){
        std::cerr << "Error! No elements in list!" << std::endl;
        return 1;
    }
    
    val = list.maxValue();
    std::cout << "Max value in list is " << val << std::endl;
    std::cout << "it's " << list.findElement(val) << "(th) from begin." << std::endl;
    
    return 0;
}
старался попроще сделать, если что - спрашивайте...
 
Текущее время: 19:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru