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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Alex Dzot
3 / 3 / 0
Регистрация: 12.01.2010
Сообщений: 34
#1

СПИСОК СТЕК - C++

29.05.2010, 16:22. Просмотров 1583. Ответов 8
Метки нет (Все метки)

Разработка демонстрационной программы работы со списками, типа стек.

Помогите пожалуйста!!! Я знаю,что такое списки стек но понимаю задание приведенное выше.
Объясните как это дложно выглядить, я представить себе не могу.

Люди, если кто-знает как это делается, то,пожалуйста, не будьте безразличными
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4259 / 2791 / 219
Регистрация: 12.12.2009
Сообщений: 7,120
Записей в блоге: 1
Завершенные тесты: 1
29.05.2010, 16:53     СПИСОК СТЕК #2
Как вариант - создать класс Steck, который содержит простой массив, включить в него фунции PUSH и POP. Вот собственно и все.

Добавлено через 2 минуты
А если проблема в том, как продемонстрировать работу программы, то тут все элементарно, просто не много фантазии))
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
29.05.2010, 17:04     СПИСОК СТЕК #3
Alex Dzot, набросал тебе прогу...

содержатся основные функции по работе со стеком - создание, добавление, просмотр и удаление.

На мой взгляд, это и есть твое задание

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
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
struct Stack
{
    int info;
    Stack *next;
} *begin, *t;
 
Stack* InStack(Stack*, int);
void View(Stack*);
void Delete(Stack**);
int rand(void);
 
Stack* InStack(Stack *p, int in)
{
    Stack *t = new Stack;
    t->info = in;
    t->next = p;
    return t;
}
 
void View(Stack *p)
{
    Stack *t = p;
    while(t != NULL)
    {
        cout << " " << t->info << endl;
        t = t->next;
    }
}
 
void Delete(Stack **p)
{
    while(*p != NULL)
    {
        t = *p;
        *p = (*p)->next;
        delete t;
    }
}
 
void main()
{
    int i, in, n, kod;
    while(true)
    {
        cout << "\n\tCreate - 1.\n\tAdd - 2.\n\tView - 3.\n\tDelete - 4.\n\tEXIT - 0. : ";
        cin >> kod;
        switch(kod)
        {
        case 1: case 2:
            if (kod == 1 && begin != NULL)
            {
                cout << "Clear memory!" << endl;
                break;
            }
            cout << "Input kol = ";
            cin >> n;
            for (i = 1; i <= n; i++)
            {
                in = rand();
                begin = InStack(begin, in);
            }
            if (kod == 1) cout << "Create " << n << endl;
            else cout << "Add " << n << endl;
            break;
 
        case 3:
            if (!begin)
            {
                cout << "Stack pust!" << endl;
                break;
            }
            cout << "---Stack---" << endl;
            View(begin);
            break;
        
        case 4:
            Delete(&begin);
            cout << "Memory free!" << endl;
            break;
 
        case 0:
            if (begin != NULL)
                Delete(&begin);
            return;
 
        }
    }
}
Alex Dzot
3 / 3 / 0
Регистрация: 12.01.2010
Сообщений: 34
29.05.2010, 17:06  [ТС]     СПИСОК СТЕК #4
А можно чуть подробнее?


Мне препод мойс сказал, что с помощью этой программы я должен объяснить человеку,что такое списки стек без моего присутствия, ну тоесть человек запустил прогу и всё понял.

Можно хоть начало предпалогаемого кода, поскольку во всей литературе идет пример с тарелками, а самого синтаксиса нигде не встречал((( а ток хоть начало будет может препод дальше подскажет чё нибудь
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
29.05.2010, 17:07     СПИСОК СТЕК #5
Alex Dzot, смотри мой пример, там все уже реализовано
Alex Dzot
3 / 3 / 0
Регистрация: 12.01.2010
Сообщений: 34
29.05.2010, 17:10  [ТС]     СПИСОК СТЕК #6
Спасибо , а если не сложно коментарии можно к строкам.

P.S: мечтаю стать программистом, учусь на это ,но пока результата Null, как с этим бороться в универе ничему не учат
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
29.05.2010, 17:20     СПИСОК СТЕК #7
Alex Dzot, пояснил основные моменты

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
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
struct Stack //объявление структутры стека
{
    int info; //информационная часть элемента, например int
    Stack *next; //адресная часть - указатель на следующий элемент
} *begin, *t; //указатель вершины стека (*begin), временный (*t)
 
Stack* InStack(Stack*, int); //функция формирования элемента стека
void View(Stack*); //функция просмотра стека
void Delete(Stack**); //функция освобождения памяти, занятой стеком
int rand(void); //рандом
 
Stack* InStack(Stack *p, int in)
{
    Stack *t = new Stack; //Захватываем память для элемента
    t->info = in; //формируем информационную часть
    t->next = p; //формируем адресную часть
    return t;
}
 
void View(Stack *p)
{
    Stack *t = p; //устанавливаем текущий указатель на начало списка
    while(t != NULL) //начинаем цикл, работающий до тех пор, пока указатель t не равен NULL (признак окончания списка)
    {
        cout << " " << t->info << endl; //вывод на экран информационной части
        t = t->next; //текущий указатель переставляем на следующий элемент
    }
}
 
void Delete(Stack **p)
{
    while(*p != NULL)
    {
        t = *p;
        *p = (*p)->next;
        delete t;
    }
}
 
void main()
{
    int i, in, n, kod;
    while(true)
    {
        cout << "\n\tCreate - 1.\n\tAdd - 2.\n\tView - 3.\n\tDelete - 4.\n\tEXIT - 0. : ";
        cin >> kod;
        switch(kod)
        {
        case 1: case 2:
            if (kod == 1 && begin != NULL)
            {
                //Если создаем новый стек, должны освободить память, занятую предыдущим
                cout << "Clear memory!" << endl;
                break;
            }
            cout << "Input kol = ";
            cin >> n;
            for (i = 1; i <= n; i++)
            {
                in = rand();
                begin = InStack(begin, in); //добавление нового элемента в стек, вершиной которого является указатель begin
            }
            if (kod == 1) cout << "Create " << n << endl;
            else cout << "Add " << n << endl;
            break;
 
        case 3:
            if (!begin)
            {
                cout << "Stack pust!" << endl;
                break;
            }
            cout << "---Stack---" << endl;
            View(begin);
            break;
        
        case 4:
            Delete(&begin); //после выполнения функции указатель на вершину будет равен NULL
            cout << "Memory free!" << endl;
            break;
 
        case 0:
            if (begin != NULL)
                Delete(&begin);
            return;
 
        }
    }
}
Alex Dzot
3 / 3 / 0
Регистрация: 12.01.2010
Сообщений: 34
29.05.2010, 17:37  [ТС]     СПИСОК СТЕК #8
Qwerty_coder, огромное тебе человеческое спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2010, 18:11     СПИСОК СТЕК
Еще ссылки по теме:

C++ 3 класса: список, стек(как список), очередь(как список)
Стек (связный список). Нужно ли проверять на пустоту? C++
Стек через связный список C++
Функция удаления элементов (список, стек) C++
C++ Добавить комментарии к коду (список - стек)

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

Или воспользуйтесь поиском по форуму:
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
30.05.2010, 18:11     СПИСОК СТЕК #9
Alex Dzot,

не за что =)
Yandex
Объявления
30.05.2010, 18:11     СПИСОК СТЕК
Ответ Создать тему
Опции темы

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