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

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

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

Стек через связный список - C++

10.05.2014, 13:13. Просмотров 342. Ответов 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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <iostream>
#include <locale.h>
using namespace std;
const int n=10;
class STACK_A
{
private:
    int top;
    char c[n];
public:
    STACK_A();
    friend class reckon;
    friend void restore(STACK_A ob_A, STACK_A ob_B);
    void push(char s);
    void pop ();
    void show_stack();
    void make_null();
};
STACK_A::STACK_A(){
    top=n;
    cout<<"\nСтек успешно создан"<<endl<<endl;
}
void STACK_A:: push(char s)
{
    if (top==0)
        cout<<"error"<<endl;
    else
    {
        top--;
        c[top]=s;
    }
}
void STACK_A:: pop()
{
    top++; 
}
void STACK_A:: show_stack () 
{
    cout<<endl<<"Ваш стек:";
    for(int i=top;i<n;++i)
        cout<<endl<<"\t"<<c[i];
    cout<<endl;
}
void STACK_A::make_null()
{
    top=n;
}
class reckon
{
private:
    int i, j, a, b;
public:
    reckon();
    void counting (STACK_A ob_A, STACK_A ob_B);
};
reckon::reckon(){
    i=n; j=n;
}
void reckon::counting(STACK_A ob_A, STACK_A ob_B)
{
    while (i!=ob_A.top){
        i--;}
    while (j!=ob_B.top){
        j--;}
    a=n-i; b=n-j;
    cout<<"\nв стеке А "<<a<<" элементов\nв стеке B "<<b<<" элементов\n"
        <<"общее число элементов в стеках:\n"<<a+b<<endl<<endl;
}
void restore(STACK_A ob_A, STACK_A ob_B)
{
    int j, i;
    cout<<"Начальное положение элементов в стеке А:\n\t";
    for (j=n-1; j>=ob_A.top; --j){
        cout<<ob_A.c[j]<<" ";}
    cout<<endl;
    cout<<"Начальное положение элементов в стеке B:\n\t";
    for (i=n-1; i>=ob_B.top; --i){
        cout<<ob_B.c[i]<<" ";}
    cout<<endl;
}
void main()
{
    setlocale(LC_ALL, "Rus");
    STACK_A obj_A; STACK_A obj_B; reckon obj_R;
start:
    cout<<"Выберете операцию:\nA - действия над стеком A;\nB - действия над стеком B;\n"
        <<"= - показать начальное положение элементов\n+ - подсчитать общее количество элементов\n"
        <<"~ - выйти из программы\n";
    char a;
    cin>>a;
    while (a!='~'){
    switch (a){
case'=': restore(obj_A, obj_B); goto start;
case'+': obj_R.counting(obj_A, obj_B); goto start;
case'A':
    cout<<" Выберете операцию:\n # - удалить вершину;\n = - вывод стека на экран;\n"
        <<" _ - очистить стек;\n\n\t\t\t< - вернутся к выбору стека;\n"
        <<"Любой другой символ додаётся в стек;\n\n начните ввод:\n";
    char C;
    cin>>C;
    while (C!='~')
    {   
        switch (C)
        {
        case'#': obj_A.pop(); break;
        case'=': obj_A.show_stack(); break;
        case'_': obj_A.make_null(); break;
        case'<': goto start;
        default: obj_A.push(C);
        }
        cin>>C;
    }
case'B':
    cout<<" Выберете операцию:\n # - удалить вершину;\n = - вывод стека на экран;\n"
        <<" _ - очистить стек;\n\n\t\t\t< - вернутся к выбору стека;\n"
        <<"Любой другой символ додаётся в стек;\n\n начните ввод:\n";
    char C_B;
    cin>>C_B;
    while (C_B!='~')
    {   
        switch (C_B)
        {                  
           case'#': obj_B.pop(); break;
           case'=': obj_B.show_stack(); break;
           case'_': obj_B.make_null(); break;
           case'<': goto start;
           default: obj_B.push(C_B);
        }
        cin>>C_B;
    }
}
    }}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 13:13     Стек через связный список
Посмотрите здесь:

Стек, связный список и глупый вопрос - C++
Содержание stack.h #include &lt;cstddef&gt; // Определение константы NULL template &lt;typename T&gt; class Stack { public: Stack(); ...

Стек (связный список). Нужно ли проверять на пустоту? - C++
Всем добра, у меня к Вам есть парочка вопросов о стеке, буду благодарен за помощь. Передо мной стояла задача: 1) Инициализировать...

Связный список - C++
Здравствуйте. Подскажите информацию насчет связных списков. Книгу, или сайтик.

Связный список - C++
node *temp; 1.temp = (node*)malloc(sizeof(node)); 2.temp = new node; 1)Как работает (node*)malloc(sizeof(node)) ? что...

Связный список - C++
Здравствуйте. Имеется структура struct list { CString name,attr,path,date; list* next; }; list* first = NULL;

Связный список - C++
Скажите, пожалуйста, почему не отображается lastName? Или в структуре можно создавать только один тип для связных списков? #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
10.05.2014, 13:14     Стек через связный список #2
Для начала: Написать стек на указателях
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
10.05.2014, 15:34     Стек через связный список #3
Croessmah, так он походу хочет этот переделать через указатели.
Grraf
1 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 32
10.05.2014, 15:49  [ТС]     Стек через связный список #4
Да да мне нужно именно этот переделать через указатели
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
10.05.2014, 15:52     Стек через связный список #5
Цитата Сообщение от UnsKneD Посмотреть сообщение
так он походу хочет этот переделать через указатели.
и в чем разница между "переделать это" и "написать новое"?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2014, 16:02     Стек через связный список
Еще ссылки по теме:

Связный список - C++
Не получается нормально скомпоновать файлы :( Сделал связный список использую шаблоны класса. Файл ListSpisok.h и есть сам связный...

Связный список - C++
Создать связанный список целых чисел, расположенных по возрастанию. Включить в список три числа, не нарушая упорядоченности. +ввод +вывод...

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

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

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

Четырёх связный список - C++
Доброго всем времени суток. Помогите пожалуйста написать программу на с++ по следующему заданию: Создать класс &quot;Матрица,n,m&quot;, где n и m -...


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

Или воспользуйтесь поиском по форуму:
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
10.05.2014, 16:02     Стек через связный список #6
Тут все просто. Пишем обычный односвязный список. Вершина стека - голова списка. Добавление в стек - добавление в начало списка. Извлечение из вершины - удаление первого элемента списка.
Найти простейший односвязный список можно на форме поиском.
Yandex
Объявления
10.05.2014, 16:02     Стек через связный список
Ответ Создать тему
Опции темы

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