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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Замена элементов списка http://www.cyberforum.ru/cpp-beginners/thread164525.html
Помогите пожалуйста написать программу. В составе программы описать функцию, которая заменяет в списке все вхождения элемента E1, значение которого введено с клавиатуры, на элемент E2, значение которого также введено с клавиатуры.
C++ Структур комплексных чисел Задание: Организовать структуру комплексных чисел и для неё реализовать операции: +, -, *, /, и нахождение сопряженного числа. Результат вывести на экран. Для демонстрации работы функции сделать меню с возможностью выбора. (это я думаю про знаки операции) вот что у меня выходит по тексту, проблема в том что, сначала компилируется все норм, и даж выводит первый запрос, потом все глючит,... http://www.cyberforum.ru/cpp-beginners/thread164524.html
C++ Шифрование чисел
Программа должна шифровать число следующим образом: заменять каждую цифру остатком от деления (цифра+7)/10. Затем написать программу дешифровки для получения исходных чисел. (Задачка взята собственно из книги Дейтела.) Первая часть затруднений не вызывает, а вот с дешифровкой не могу сообразить. Как из остатка можно получить исходное делимое? Диапазон чисел тут небольшой (получается от 7 до 16),...
C++ Программа для перевода валют
Помогите пожалуйста,с++ не проходили,а уже скоро зачетная неделя будет,и там есть с++ и вот эти 2 задачи. 1)Напишите программу, которая переводит рубли в евро с возможностью изменения курса валюты. 2)В одномерном массиве,состоящем из n целых чисел элементов,вычислить: 1-номер максимального элемента 2-сумму элементов,расположенных после максимального элемента. буду всем очень...
C++ Разбить программу на потоки http://www.cyberforum.ru/cpp-beginners/thread164495.html
Помогите пожалуйста разбить программу на потоки. Всего у нас три суммы в программе, т.е. должно быть три потока, которые в итоге выводят конечный результат. Проще говоря программа должна быть параллельной и иметь три потока. Вот я начал пробовать, но что-то не выходит. #include <iostream> #include <windows.h> #include <pthread> void * func_MyThread(void * args) { int S=0; // int i; int...
C++ Сортировка двунаправленного линейного списка по алгоритму Хоара ПОМОГИТЕ СРОЧНО!!!! нужно отсортировать двунаправленный линейный список по алгоритму Хоара менять местами можно только указатели!! код алгоритма Хоара : int split(T * a, int n){ int i = 0, j = n - 1; if (a > a){ T x = a; a - a; a = x } int max = i , min = j ; while... подробнее

Показать сообщение отдельно
easybudda
Эксперт CЭксперт С++
9461 / 5474 / 927
Регистрация: 25.07.2009
Сообщений: 10,498
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;
}
старался попроще сделать, если что - спрашивайте...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru