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

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

Войти
Регистрация
Восстановить пароль
 
Белчен
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 8
#1

Создание и работа со стеком - C++

27.03.2014, 19:38. Просмотров 335. Ответов 6
Метки нет (Все метки)

выскакивает ошибка Необработанное исключение по адресу 0x00BC56C7 в стек.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCDCD.
Как исправить?

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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
struct  Node{
    int data;
    Node *next;
};
 
 
struct Stack{
    Node*begin;
};
void Init(Stack &s)
{
    s.begin= NULL;
}
bool Empty(Stack &s)
{
    if (s.begin == NULL)
        return true;
    else return false;
}
void push_Back(Stack &s, int data)
{
    Node*tmp=new Node;
 
    tmp->data = data;
    tmp->next = NULL;
 
    if (s.begin==NULL) 
    s.begin = tmp;
    
}
 
void pop_front(Stack &s)
{
    Node*tmp = s.begin;
    s.begin = s.begin->next;
    if (s.begin== NULL)
    delete tmp;
}
int Top(Stack &s)
{
    return s.begin->data;
}
void Print(Stack &s)
{
    Node*tmp = s.begin;
    while (tmp != NULL) tmp;
    { printf("%d", tmp->data);
    tmp = tmp->next;
    }
}
void clear(Stack &s)
{
    Node*tmp = s.begin;
    while (s.begin != NULL)
    {
        tmp = s.begin;
        s.begin = s.begin->next;
        delete tmp;
    }
}
int main()
{
    setlocale(LC_ALL, "Russian");
    Stack *a = new Stack;
 
    for (int i = 1; i != 21; ++i)
        push_Back(*a, i);
    while (a)
    
    {
        printf("%d", a->begin->data);
        pop_front(*a);
    }
    delete[]a;
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 19:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание и работа со стеком (C++):

Работа со стеком - C++
Люди...Помогите...Напишите пожалуйста библиотеку для работы со стеком и поясните как и что нужно делать!!!))))

Работа со стеком! - C++
Необходимо записать заполнение стека с клавиатуры. Добавлено через 44 секунды #include &lt;iostream&gt; #include &lt;stack&gt; int main...

Работа со СТЕКОМ!!!!!!:) - C++
Создать класс для работы со стеком. Элемент стека – символ. --- Сформировать два стека,содержащие последовательности символов. ---...

Работа со стеком. - C++
Интересует вопрос: для использовония функций pop() и push() нужно ли подключать заголовочный файл из стандартной библиотеки?

работа со стеком - C++
попалась такая задача: создать стек для положительных и отрицательных чисел. максимальный размер стека ввести с экрана. Создать функции для...

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

6
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
27.03.2014, 20:28 #2
При обработке функций push_Back, pop_front вы создаете временный объект tmp, на который даете указатель в объект структуры Stack. После выхода из функции объект более не доступен.
1
Белчен
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 8
27.03.2014, 22:08  [ТС] #3
ну а как же тогда сделать, чтобы он был доступен?
0
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
28.03.2014, 15:26 #4
Нужно что бы объекты Node были доступны в любой точке, где вы можете к ним обратится.
Точно пока не скажу, но возможно нужно организовать все это дело на основе другого контейнера или структуры организации данных.
Так же как, например, вектор организован на основе динамического массива.
0
Белчен
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 8
31.03.2014, 09:15  [ТС] #5
спасибо, учту
0
IrineK
Заблокирован
31.03.2014, 12:09 #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
87
88
89
90
91
92
93
94
95
96
#include <iostream>
using std::cout;
 
struct  Node
{   int data;
    Node *next;
};
 
struct Stack
{   Node *begin;
};
 
Stack *CreateStack()
{   Stack *s = new Stack;
    s->begin= NULL;
    return s;
}
 
bool Empty(Stack *s)
{   if (s->begin == NULL)
        return true;
    return false;
}
 
void PushBack(Stack *s, int data)
{   Node *tmp = new Node;
    tmp->data = data;
    tmp->next = NULL;
 
    if (Empty (s)) 
    {   s->begin = tmp;
        return;
    }
    
    Node *n1 = s->begin;
    Node *n2 = s->begin->next;
    
    while (n2 != NULL)
    {   n1 = n1->next;
        n2 = n2->next;
    }
 
    n1->next = tmp;
}
 
void PopFront(Stack *s)
{   if (Empty (s))
        return;
    
    Node *tmp = s->begin;
    s->begin = s->begin->next;
    delete tmp;
}
 
int Top(Stack *s)
{   return s->begin->data;
}
 
void Print(Stack *s)
{   Node *tmp = s->begin;
    while (tmp != NULL) 
    {   printf("%5d", tmp->data);
        tmp = tmp->next;
    }
    printf("\n");
}
 
void Clear(Stack *s)
{   Node *tmp = s->begin;
    while (s->begin != NULL)
        PopFront(s);
}
 
int main()
{   setlocale(LC_ALL, "Russian");
    Stack *a = CreateStack();
 
    for (int i = 1; i < 11; ++i)
        PushBack(a, i);
 
    cout << "\nСтек создан:\n";
    Print (a);
 
    cout << "\nЗначение первого узла:\n\t" << Top(a) << '\n';
    
    cout << "\nУдаляем первый узел...\nСтек после удаления:\n";
    PopFront (a);
    Print (a);
 
    cout << "\nУдаляем весь стек...\n";
    Clear (a);
    cout << "Успешно\n";
    
    getchar();
    return 0;
}
1
Миниатюры
Создание и работа со стеком  
Белчен
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 8
31.03.2014, 15:38  [ТС] #7
Спасибо большое!))сама бы не справилась(
0
31.03.2014, 15:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 15:38
Привет! Вот еще темы с ответами:

Работа со стеком - C++
Ребят, помогите пожалуйста с заданиями: Задание 1 Реализовать стек списком. Все стандартные операции со стеком должны быть...

Работа со стеком - C++
Привет всем. Помогите пожалуйста написать прогу. Постороить класс для работы со стеком.Элементы стека -целое число. Ввести две...

Работа со стеком - C++
Помогите исправить ошибки! Пусть символ # определен в текстовом редакторе как стирающий символ Backspace, т.е. строка abc#d##c в...

Работа со стеком - C++
Создать программу, реализовав работу со структурой данных - стеком. В программе реализовать добавление и удаление элементов.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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