С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.65
Em1ly
5 / 5 / 0
Регистрация: 21.05.2010
Сообщений: 154
#1

Описать функцию, которая удаляет все минимальные элементы из списка - C++

08.09.2010, 17:32. Просмотров 3153. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста. Я студент второго курса. (Не программист ни разу >.<") Мне нужна помощь в написании программы. Завтра уже нужно принести результат. Вот сама задача:

Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. В составе программы описать функцию, которая удаляет все минимальные элементы из списка.

Очень прошу помощи!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2010, 17:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Описать функцию, которая удаляет все минимальные элементы из списка (C++):

Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка. - C++
Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка. на с++

Описать функцию, которая удаляет из списка L первый отрицательный элемент - C++
Добрый день, у меня возник вопрос по задаче: У меня есть нужная программа, но она удаляет не те значения. Прошу указать на ошибки. ...

Описать функцию, которая удаляет из списка L первый неположительный элемент, если такой есть - C++
Доброго времени суток, возникли затруднения с одной задачей, вот собственно она: Странно что в заголовке темы нельзя использовать...

Описать функцию, которая удаляет из строки все лишние пробелы - C++
Помогите пожалуйста решить! Заранее благодарен!) Описать функцию, которая удаляет из строки все лишние пробелы. Пробелы считаются...

Динамические структуры данных. Сформировать динамический список, описать функцию, которая удаляет из списка за каждым вхождением элемента Е - C++
Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. Описать функцию, которая...

Описать процедуру и функцию которая, удаляет из списка L за каждым вхождением элемента Е один элем если такой есть, и он отличен от Е - C++
помогите пожалуйста очень нужно я в С++ очень плохо разбираюсь

4
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
08.09.2010, 21:09 #2
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
#ifndef MY_STACK_HPP
#define MY_STACK_HPP
 
#include <stdexcept>
 
namespace my
{
    template<class T>
    class stack
    {
        struct node
        {
            T       value;
            node*   next;
 
            node(const T& val)
                : value(val), next(NULL) {}
        };
        node*       top;
 
    public:
 
        stack();
        ~stack();
        void push(const T& val);
        T pop();
        bool empty() const;
    };
 
    template<class T>
    stack<T>::stack()
        : top(NULL) {}
 
    template<class T>
    stack<T>::~stack()
    {
        while(top)
        {
            node* temp = top;
            top = top->next;
            delete temp;
        }
    }
 
    template<class T>
    void stack<T>::push(const T &val)
    {
        if(top)
        {
            node* newNode = new node(val);
            newNode->next = top;
            top = newNode;
        }
        else
            top = new node(val);
    }
 
    template<class T>
    T stack<T>::pop()
    {
        if(!top)
            throw(std::runtime_error("Can't pop from the empty stack"));
        T retVal = top->value;
        node* delNode = top;
        top = top->next;
        delete delNode;
        return retVal;
    }
 
    template<class T>
    bool stack<T>::empty() const
    {
        return (top == NULL);
    }
}
 
#endif // MY_STACK_HPP
Длина списка не ограничена. Хотя под твою задачу больше подойдет вот эта тема.
0
Em1ly
5 / 5 / 0
Регистрация: 21.05.2010
Сообщений: 154
08.09.2010, 21:15  [ТС] #3
эээм...что-то у нас такого даже не было на лекции оо
да и...у вас тут просто составление списка-стека? оо
у нас оно короче выглядит...
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
08.09.2010, 21:23 #4
Em1ly, это объявление шаблонного класса-стека. Дальнейшая работа со стеком может выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
// ... создание экземпляра стека, хранящего элементы типа int:
my::stack<int> istack;
// ... Проталкивание элементов в стек:
for(size_t i = 0; i < 5; ++i)
    istack.push(i + 1);
// ... Проверка, пуст ли стек:
std::cout << "Stack is" << (istack.empty() ? " empty" : " not empty") << std::endl;
// ... Выталкивание всех элементов стека:
while(!istack.empty())
    std::cout << istack.pop() << std::endl;
Если это непонятно (тем более, если еще не проходили на лекциях), тогда есть смысл по ссылке, которую я дал - там есть реализация очереди на основе (динамического) массива. А вообще, нужно пользоваться поиском - такая (или подобная) тема уже была.
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,870
08.09.2010, 23:48 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
 
int main(){
    size_t size;
    int val;
    std::list<int> list;
    
    std::cout << "Number of elements: ";
    std::cin >> size;
    for ( size_t i = 0; i < size; ++i ){
        std::cout << "#" << ( i + 1) << ": ";
        std::cin >> val;
        list.push_back(val);
    }
    
    std::list<int>::iterator fnd = std::min_element(list.begin(), list.end());
    val = *fnd;
    std::cout << "The minimum value is " << val << std::endl;
    while ( ( fnd = std::find(list.begin(), list.end(), val) ) != list.end() )
        list.erase(fnd);
    
    std::cout << "List without this value(s):" << std::endl;
    std::copy(list.begin(), list.end(), std::ostream_iterator<int>(std::cout, "\n"));
    
    return 0;
}
0
08.09.2010, 23:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2010, 23:48
Привет! Вот еще темы с ответами:

Функция удаляет из списка все отрицательные элементы - C++
функция удаляет из списка все отрицательные элементы

Написать функцию, которая удаляет все лишние пробелы - C++
Доброго дня суток. Помогите пожалуйста.. Нужно написать функцию, которая удаляет все лишние пробелы, т. е. из нескольких подряд идущих...

Программа которая удаляет из массива все отрицательные элементы - C++
Есть программа которая удаляет из массива все отрицательные элементы. #include&lt;iostream&gt; #include&lt;ctime&gt; void Input_Arr(int...

Написать функцию, которая удаляет из строки s1 все символы, встречающиеся в строке s2 - C++
Народ, очень требуется помощь : :wall: № 1. Написать и протестировать функцию DELETE(s1, s2), которая удаляет из строки s1 все символы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.