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

Удалить предпоследний элемент из стека - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать класс Книга.Информация о книге: название, автор, год издания http://www.cyberforum.ru/cpp-beginners/thread1765422.html
Помогите доделать:help: Создать класс Книга.Информация о книге: название, автор, год издания. Предусмотреть возможность работы с произвольным количеством книг, поиска книги произнаку(по...
C++ Где взять скрипт простого интернет-поисковика на C++? подсажите пожалуйста хде взять скрипт простенького поисковика на с++ желательно. гуглил это дело но всё джейв энд пи-эйч-пи.. заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread1765420.html
Парсер математических выражений на С/С++ C++
Добрый вечер, можете написать или помочь написать парсер математических выражений для программы вычисляющей интеграл
В файле есть информация об абитуриентах, найти проходной балл C++
В файле есть информация об абитуриентах фио и результаты экзаменов ( сколько не помню,но кажется 4). Отдельно вводится план приёма. Надо найти проходной балл (сумма баллов экзаменов, не меньше...
C++ Вывод значения из функции http://www.cyberforum.ru/cpp-beginners/thread1765390.html
#include <iostream> using namespace std; int Var(int x, int y) { int z; z=x; x=y; y=z; return x; return y;
C++ создание класса Создать класс для квадратных матриц (для простоты можно фиксировать размер, например 3х3). В этом классе определить сложение, умножение на вещественное число (на самом деле будем делить, а не... подробнее

Показать сообщение отдельно
DemetriusGT
0 / 0 / 0
Регистрация: 19.04.2016
Сообщений: 13

Удалить предпоследний элемент из стека - C++

18.06.2016, 01:14. Просмотров 437. Ответов 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
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
#include <iostream>
#include <string>
using namespace std;
 
struct List
{
    string x; //информационный элемент
    List *Next,*Head; //Голова стека и указатель на следующий элемент
};
 
void Add(string x, List *&MyList, int &i) //Принимаем элемент стека и указатель на стек, при этом говорим, что принимаемый указатель будет сам по себе указателем
{
    List *temp=new List; //Выделяем память для нового элемента
    temp->x=x; //Записываем в поле x принимаемый в функцию элемент x
    temp->Next=MyList->Head; //Указываем, что следующий элемент это предыдущий
    MyList->Head=temp; //Сдвигаем голову на позицию вперед
    ++i;
}
 
void Show(List *MyList) //Нужен только сам стек
{
    cout<<endl;
    List *temp=MyList->Head; //Объявляем указатель и Указываем ему, что его позиция в голове стека
    //с помощью цикла проходим по всему стеку
    while (temp!=NULL) //выходим при встрече с пустым полем
    {
        cout<<temp->x<<" "; //Выводим на экран элемент стека
        temp=temp->Next; //Переходим к следующему элементу
    }
    cout<<endl;
}
 
void ClearList(List *MyList)
{
    while (MyList->Head!=NULL) //Пока по адресу не пусто
    {
        List *temp=MyList->Head->Next; //Временная переменная для хранения адреса следующего элемента
        delete MyList->Head; //Освобождаем адрес обозначающий начало
        MyList->Head=temp; //Меняем адрес на следующий
    }
}
 
void Remove(List *MyList, int i)//такой же алгоритм удаления из середины
{
    int u=2;
    List *t=MyList->Head, *tek;
    if (t==NULL) {cout<<"\nОтсутствует список.\n"; return;}
    while (u<i) { t=t->Next;  ++u;}//temp = t 
    tek = t->Next;
    delete tek; // удаляем последний
    t->Next=NULL;
    tek=t;
}
 
int main()
{
    setlocale(0, "");
    system("color 30");
    system("title Name");
    system("cls");
    string x;
    int i=0;
    List *MyList=new List; //Выделяем память для стека
    MyList->Head=NULL; //Во избежание ошибок инициализируем первый элемент
    cout<<"Вводи текст (для окончания введи ноль): "; 
    while (x!="0")
    {
        cin>>x; 
        if (x!="0") Add(x, MyList, i);
    } //Заносим данные в стек
    Show(MyList); //Выводим стек на экран в обратном порядке т.к комп читает справа налево
    Remove(MyList, i);
    Show(MyList);
    ClearList(MyList); //Очищаем память.
    delete MyList->Head;
    delete MyList;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.