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

написание функции - C++

Восстановить пароль Регистрация
 
KostyaKulakov
Заблокирован
21.08.2012, 15:18     написание функции #1
Stack.cpp
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
#include "Stack.h"
 
Node* push(Node** pTop, info_t value)
{
    Node* newNode = new Node;
    newNode->info = value;
    newNode->prev = *pTop;
    *pTop = newNode;
    return newNode;
}
 
 
info_t pop(Node** pTop)
{
    Node* oldTop = *pTop;
    info_t info = oldTop->info;
 
    *pTop = (*pTop)->prev;
    delete oldTop;
    return info;
}
 
info_t getTopValue(Node* top)
{
    return top->info;
}
 
void printStackElement(Node** top)
{
 
    while (!isEmpty(*top))
    {
        cout << pop(*&top) << endl;
    }
 
 
    
}
 
bool isEmpty(Node* top)
{
    return top == NULL;
}
Stack.h
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
#ifndef STACK_H_
#define STACK_H_
 
#include <iostream>
using namespace std;
 
#define NULL 0
 
typedef char info_t;
 
struct Node
{
    info_t info;
    Node* prev;
};
 
/* Функция добавляет в стек новый элемент со значением value
   и возвращает указатель на новую вершину стека */
Node* push(Node** pTop, info_t value);
 
/* Функция удаляет элемент с вершины стека и возвращает
   хранившееся там значение. Функция НЕ проверяет, пуст ли стек.
   Ответственность за проверку того, что стек не пуст, ложится
   на вызывающую функцию. */
info_t pop(Node** pTop);
 
/* Функция возвращает значение, хранящееся в элементе, находящемся
   в вершине стека. Ответственность за проверку того, что стек не пуст,
   ложится на вызывающую функцию. */
info_t getTopValue(Node* top);
 
/* Функция проверяет, не пуст ли стек */
bool isEmpty(Node* top);
 
/* Функция печатает, все элементы стэка. */
void printStackElement(Node** top);
 
#endif
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "Stack.h"
 
int main()
{
    Node* top = NULL;
 
    // Заполнение стека некоторыми элементами
    push(&top, '(');
    push(&top, '[');
    push(&top, '{');
 
    // Извлечение и печать всех элементов стека
    printStackElement(&top);
    cout << endl;
 
    printStackElement(&top);
//  printStackElement(&top);
 
}
суть в том нужно сделать так чтобы функция printStackElement не трогала значения ну те выводила их и не изменяла ну или потом возращала на свои места. она ивзлекает их и всё только 1 раз можно эту функцию применить а мне надо чтобы хоть сколько. вот хз как сделать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.08.2012, 15:27     написание функции #2
сделай класс "стек" и будет тебе счастье
KostyaKulakov
Заблокирован
21.08.2012, 15:56  [ТС]     написание функции #3
я ешё про классы незнаю нечего можно ли другим способом?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.08.2012, 16:02     написание функции #4
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
я ешё про классы незнаю
так узнай
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
можно ли другим способом?
сделать через ж... можно всегда
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.08.2012, 16:02     написание функции #5
Значит пришло время узнать. И про шаблоны.

В Node же есть указатель prev. Пройдитесь циклом по типу
C++
1
2
3
for (Node *i = stack_top; i != NULL; i = i->prev) {
  std::cout << i->info;
}
Yandex
Объявления
21.08.2012, 16:02     написание функции
Ответ Создать тему
Опции темы

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