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

Работа со стеком - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Paraday
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 73
30.05.2012, 13:59     Работа со стеком #1
Создать программу, реализовав работу со структурой данных - стеком. В программе
реализовать добавление и удаление элементов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2012, 13:59     Работа со стеком
Посмотрите здесь:

C++ работа со стеком
C++ Работа со стеком
C++ Работа со стеком
C++ Работа со СТЕКОМ!!!!!!:)
Работа со стеком! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,120
30.05.2012, 14:33     Работа со стеком #2
Просто показать, как работает стек?
Paraday
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 73
30.05.2012, 14:39  [ТС]     Работа со стеком #3
Получается что да.
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,120
30.05.2012, 14:56     Работа со стеком #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
// Стек:
 
int *sArr;   
int sPtr;
int sSize;
 
// Реализация стека
 
void InitStack(int n) // Проинициализировать стек
{
    int i;
    sSize=n;
    sArr=new int[sSize];
    for (i=0; i< sSize; i++) sArr[i]=0;
    sPtr=0;
}
 
void DestroyStack() // Уничтожить стек
{
    delete sArr;
}
 
int isEmptyS()   // Проверить пустоту
{
    if (sPtr == 0)
       return -1;
    else
       return 0;
}
 
void Push(int x)    // Занести в стек
{
    if (sPtr < sSize)
    {
        sArr[sPtr++]=x;
        Chk[x]=1;
        Num[x]=sPtr-1;
    }
    else 
        throw "Stack overflow!!!";
 
}
 
int Pop()   // Извлечь из стека
{
    int z;
    if (sPtr > 0) 
    {
        z=sArr[--sPtr];
        return z;
    }
    throw "Stack is empty!"; 
}
 
void Show()  // Распечатать содержимое стека
{
    int i;
 
    cout << "STACK: ";
 
    for (i=0; i < sPtr; i++)
        cout << sArr[i] << " ";
 
    cout << endl;
 
}
Пойдет?
Paraday
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 73
30.05.2012, 15:43  [ТС]     Работа со стеком #5
а можешь полностью пожалуйста. А то я не совсем уверен что тут подключать...
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,120
31.05.2012, 11:55     Работа со стеком #6
Примерно так:


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
#include "iostream.h"
 
 
// Стек:
 
int *sArr;   
int sPtr;
int sSize;
 
// Реализация стека
 
void InitStack(int n) // Проинициализировать стек
{
    int i;
    sSize=n;
    sArr=new int[sSize];
    for (i=0; i< sSize; i++) sArr[i]=0;
    sPtr=0;
}
 
void DestroyStack() // Уничтожить стек
{
    delete sArr;
}
 
int isEmptyS()   // Проверить пустоту
{
    if (sPtr == 0)
       return -1;
    else
       return 0;
}
 
void Push(int x)    // Занести в стек
{
    if (sPtr < sSize)
    {
        sArr[sPtr++]=x;
        Chk[x]=1;
        Num[x]=sPtr-1;
    }
    else 
        throw "Stack overflow!!!";
 
}
 
int Pop()   // Извлечь из стека
{
    int z;
    if (sPtr > 0) 
    {
        z=sArr[--sPtr];
        return z;
    }
    throw "Stack is empty!"; 
}
 
void Show()  // Распечатать содержимое стека
{
    int i;
 
    cout << "STACK: ";
 
    for (i=0; i < sPtr; i++)
        cout << sArr[i] << " ";
 
    cout << endl;
 
}
 
int main(int argc, char* argv[])
{
 
  InitStack(100);
 
  Push(1);
  Push(2);
  Push(3);
 
  cout << Pop() << endl;
  cout << Pop() << endl;
  cout << Pop() << endl;
 
  DestroyStack();
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2012, 14:24     Работа со стеком
Еще ссылки по теме:

C++ Работа со стеком.
C++ Работа со стеком
Работа со стеком C++

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,120
31.05.2012, 14:24     Работа со стеком #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
83
84
85
86
#include "iostream.h"
 
// Стек:
 
int *sArr;   
int sPtr;
int sSize;
 
// Реализация стека
 
void InitStack(int n) // Проинициализировать стек
{
    int i;
    sSize=n;
    sArr=new int[sSize];
    for (i=0; i< sSize; i++) sArr[i]=0;
    sPtr=0;
}
 
void DestroyStack() // Уничтожить стек
{
    delete sArr;
}
 
int isEmptyS()   // Проверить пустоту
{
    if (sPtr == 0)
       return -1;
    else
       return 0;
}
 
void Push(int x)    // Занести в стек
{
    if (sPtr < sSize)
    {
        sArr[sPtr++]=x;
        //Chk[x]=1;
        //Num[x]=sPtr-1;
    }
    else 
        throw "Stack overflow!!!";
 
}
 
int Pop()   // Извлечь из стека
{
    int z;
    if (sPtr > 0) 
    {
        z=sArr[--sPtr];
        return z;
    }
    throw "Stack is empty!"; 
}
 
void Show()  // Распечатать содержимое стека
{
    int i;
 
    cout << "STACK: ";
 
    for (i=0; i < sPtr; i++)
        cout << sArr[i] << " ";
 
    cout << endl;
 
}
 
int main(int argc, char* argv[])
{
 
  InitStack(100);
 
  Push(1);
  Push(2);
  Push(3);
 
  cout << Pop() << endl;
  cout << Pop() << endl;
  cout << Pop() << endl;
 
  DestroyStack();
 
  return 0;
}
Из картинки видно, что числа выводятся из стека в порядке, противоположном порядку ввода.
Миниатюры
Работа со стеком  
Yandex
Объявления
31.05.2012, 14:24     Работа со стеком
Ответ Создать тему
Опции темы

Текущее время: 19:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru