Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2014, 14:02   #1
mars999
Новичок
Джуниор
 
Регистрация: 31.10.2014
Сообщений: 1
По умолчанию с++ списки и стеки

Здравствуйте, помогите пожалуйста исправить программы.
1). Нужно удалить элемент, находящийся в середине стека , если число элементов нечетное, или 2 средних элемента, если число элементов четное.(вводить значения стека с клавиатуры)

Код:
#include <stack>
#include <vector>
#include <iostream>

int main()
{
        std::stack<int> s;

        for(int i = 0; i < 11; ++i)
                s.push(i);

        std::vector<int> v;
        while(!s.empty())
        {
               s.top()%2==1;
              if(s.top()!=5)
               // s.top()%2==0;
                //if(s.top()!=5&& s.top()!=6)
                        v.push_back(s.top());   

                s.pop();
        }

    
        for(int i = v.size() - 1; i >= 0; --i)
                s.push(v[i]);

        while(!s.empty()) {
                std::cout << s.top() << ' ';
                s.pop();
        }

        return 0;
}

2).Добавить элемент в начало списка.(динамического) 

#include <iostream>
using namespace std;

struct link
{
    int data;
    link* next;
};

link* first = NULL;

void additem(int d) // добавление элементов список
{
    link* newlink = new link;
    newlink->data = d;
    newlink->next = first;
    first = newlink;
}

void display() // вывод на экран
{
    link* current = first;
    while(current)
    {
        cout << current->data << endl;
        current = current->next;
    }
}


int main()
{
    additem(12);
    additem(11);
    additem(10);
    additem(9);

    display();
}

Последний раз редактировалось ACE Valery; 31.10.2014 в 15:11.
mars999 вне форума Ответить с цитированием
Старый 01.11.2014, 16:08   #2
jsbot
Новичок
Джуниор
 
Регистрация: 01.11.2014
Сообщений: 2
По умолчанию

[1]: обязательно ли использовать std::vector<int>? Вот, например, вариант с двумя стеками:
Код:
#include <stack>
#include <iostream>

int main() {
    std::stack<int> a, b;
    for (int i = 0; i < 11; ++i) {
        a.push(i);
    }

    while (a.size() > b.size()) {
        b.push(a.top()); a.pop();
    }

    if (a.size() == b.size()) {
        a.pop();
        b.pop();
    }
    b.pop();

    while (!b.empty()) {
        a.push(b.top()); b.pop();
    }

    while (!a.empty()) {
        std::cout << a.top() << ' ';
        a.pop();
    }

    return 0;
}
Кстати, а почему в первой задаче вы используете контейнер из STL, а во второй самописный список? Ведь есть std::list.
jsbot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки и Стеки?!(Delphi) Npwas Помощь студентам 0 25.03.2012 20:08
стеки, очереди, двусвязные списки paul0 Помощь студентам 1 02.06.2011 11:02
Записи, Стеки, Очереди, Списки. Вилли Помощь студентам 2 04.05.2010 18:40
Однонаправленные списки, стеки и очереди palich Паскаль, Turbo Pascal, PascalABC.NET 2 16.01.2009 09:28