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

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

Войти
Регистрация
Восстановить пароль
 
sashka19
1 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 16
#1

Cтек (удалить элемент, который мы хотим) - C++

05.06.2013, 01:30. Просмотров 392. Ответов 6
Метки нет (Все метки)

нужно из стека удалить элемент ,который мы хотим. нашла вот это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void del_elem() {
int t;
cout << "vvedite chislo dlya udaleniya" <<endl;
cin >> t;
mlifo.del_2 (t);
 
void del_2 (int idata) {
struct elem* curr;
struct elem* temp;
curr=begin;
temp=search_elem(idata);
while((curr->next!=temp)&&(curr->next!=NULL)) {
curr=curr->next;
};
curr->next=temp->next;
if (temp==begin) {
begin=begin->next;
}
delete temp;
};
но как переделать ,чтобы именно по номеру элемента удалялось?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 01:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Cтек (удалить элемент, который мы хотим) (C++):

Удалить элемент массива, который меньше среднего арифметического - C++
1.Задан массив вещественных чисел. Удалить элемент, который меньше среднего арифметического элементов массива. Если таких элементов...

Удалить из списка элемент, стоящий после элемента на который указывает пользователь - C++
Нужно удалить из списка элемент, стоящий после элемента на который указывает пользователь, подскажите пожалуйста, как это сделать ...

Удалить из последовательности последний по порядку элемент, который имеет значение меньше наибольшего - C++
Даны целые числа a1,...,an. Удалить из последовательности последний по порядку элемент, который имеет значение меньше наибольшего, но...

Cтек!!! - C++
Нужно реализовать стек. Обучающий. Но без использования классов точнее говоря без ООП. Должен в себя включать создать, добавить,...

CТЕК ! - C++
#include &lt;iostream&gt; using namespace std; class stack { int st; int tos; public: int back(); ...

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

6
ksandro
31 / 31 / 1
Регистрация: 15.04.2011
Сообщений: 81
05.06.2013, 01:35 #2
Особенность стека в том что из него можно вытащить только последний элемент. Чтобы удалить произвольный элемент, надо использовать второй временный стек, переложить в него верхние элементы по очереди, удалить нужный, затем обратно вернуть элементы из временного стека обратно.
0
sashka19
1 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 16
05.06.2013, 01:56  [ТС] #3
может кто-нибудь помочь с этим вторым стеком? одна ночь осталась,а я пока не понимаю как начать вообще
0
MrGluck
Модератор
Эксперт CЭксперт С++
7279 / 4440 / 650
Регистрация: 29.11.2010
Сообщений: 12,022
05.06.2013, 02:52 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
На мотивы бреда:
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
#include <iostream>
#include <stack>
 
int main()
{
    std::stack<int> s, s2, s3;
    for (int i=1; i <= 6; i++)
        s.push(i);
 
    int pos;
    std::cout << "Enter position of element to del: ";
    std::cin >> pos;
    pos = s.size() - pos;
 
    for (int i=0; !s.empty(); i++)
    {
        if (i != pos)
            s2.push(s.top());
        s.pop();
    }
    while (!s2.empty())
    {
        s3.push(s2.top());
        s2.pop();
    }
 
    std::cout << "Result: ";
    while (!s3.empty())
    {
        std::cout << s3.top() << ' ';
        s3.pop();
    }
}
Ибо стек не для этого создан.
3
sashka19
1 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 16
05.06.2013, 02:57  [ТС] #5
да я понимаю что не для этого.но как-то надо лабу сдать)
0
MrGluck
Модератор
Эксперт CЭксперт С++
7279 / 4440 / 650
Регистрация: 29.11.2010
Сообщений: 12,022
05.06.2013, 03:01 #6
А потом и идет непонимание сути FIFO, LIFO...
0
ksandro
31 / 31 / 1
Регистрация: 15.04.2011
Сообщений: 81
07.06.2013, 15:10 #7
Вот еще например как-то так может выглядеть удаление элемента из заданной позиции
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
#include <iostream>
#include <stack>
 
template<typename T>
bool delete_element(std::stack<T>& s, size_t pos)
{
    //check if position is valid
    if(pos >= s.size())
    {
        return false; //no such position
    }
 
    std::stack<T> s_tmp; //temporary stack
 
    // mov top elements to temporary stack
    while(s.size() > pos + 1)
    {
        s_tmp.push(s.top());
        s.pop();
    }
    //delete element
    s.pop();
 
    //return elements back
    while(!s_tmp.empty())
    {
        s.push(s_tmp.top());
        s_tmp.pop();
    }
 
    return true;
}
 
template<typename T>
void print_stack(std::stack<T>& s)
{
    std::stack<T> s_tmp; //temporary stack
    while(!s.empty())
    {
        s_tmp.push(s.top());
        s.pop();
    }
    while(!s_tmp.empty())
    {
        s.push(s_tmp.top());
        std::cout << s.top() << " ";
        s_tmp.pop();
    }
 
    std::cout << "\n";
}
 
int main()
{
 
    std::stack<int> s;
    for (int i=0; i < 10; ++i)
    {
        s.push(i);
    }
 
    std::cout << "stack: ";
    print_stack(s);
 
 
    int pos;
    std::cout << "\n" << "Enter position of element to del: ";
    std::cin >> pos;
 
    
    if(delete_element(s, pos))
    {
        std::cout << "result: ";
        print_stack(s);
    }
    else
    {
        std::cout << "coud not delete element " << pos << "\n";
    }
 
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 15:10
Привет! Вот еще темы с ответами:

Есть ли элемент который возвращает инфу на какой элемент иерархии - C++
... Поинтор сейчас поинтит ??? Допустим есть Абстрактный папа я делаю в мейне поинтор этого папы заряжаю его на какого ниб...

Структура "Информация": - носитель; - объем; - название; - автор. Удалить первый элемент с заданным объемом информации, добавить элемент перед элемент - C++
Структура &quot;Информация&quot;: - носитель; - объем; - название; - автор. Удалить первый элемент с заданным объемом информации, добавить...

Двусвязный список - Добавить элемент после заданного, удалить заданный элемент - C++
Реализуйте списочную структуру в виде класса. работа состоит из двух частей: из класса (структуры, алгоритма) и из тестирующего кода. ...

Как удалить нужный элемент из списка или заменить этот элемент на другой? - C++
Доброго времени суток, господа! Есть список: list&lt;double&gt; list1; Есть возможность добавить в начало или в конец списка елементы:...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
07.06.2013, 15:10
Ответ Создать тему
Опции темы

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