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

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

Войти
Регистрация
Восстановить пароль
 
Voka
202 / 194 / 59
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
#1

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

27.12.2010, 12:00. Просмотров 803. Ответов 3
Метки нет (Все метки)

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

Все прошлые лабы сдал на ура, а с этой загвоздка. Не могу понять как работает стек...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2010, 12:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа со стеком (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
27.12.2010, 12:59 #2
В википедии стек с картиночкой.
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
#ifndef _CTUTOR_STACK_TEMPLATE_H_
#define _CTUTOR_STACK_TEMPLATE_H_
 
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <ctime>
 
/*
  FIFO = PushBack / PopTopOrDie
  LIFO = PushTop  / PopTopOrDie
*/
template <class Type>
class StackContainer {
 public:
  Type data_;
  StackContainer* next_;
  explicit StackContainer(const Type& data) : data_(data), next_(NULL) {}
  explicit StackContainer(const Type& data, StackContainer<Type>* next)
    : data_(data), next_(next) {}
};
 
template <class Type>
class Stack {
 public:
  typedef Type  ValueType;
  typedef Type* ValuePointer;
  Stack() : size_(0), first_(NULL), last_(NULL) {}
  ~Stack() {
    Clear();
  }
  size_t size() const { return size_; }
  void PushTop(const ValueType& data) {
    if (first_ == NULL) {
      last_ = first_ = new StackContainer<ValueType>(data);
    } else {
      StackContainer<ValueType> *stack_container =
            new StackContainer<ValueType>(data, first_);
      first_ = stack_container;
    }
    ++size_;
  }
  void PushBack(const ValueType& data) {
    if (first_ == NULL) {
      last_ = first_ = new StackContainer<ValueType>(data);
    } else {
      StackContainer<ValueType> *stack_container =
            new StackContainer<ValueType>(data);
      last_->next_ = stack_container;
      last_ = stack_container;
    }
    ++size_;
  }
  ValueType PopTopOrDie() {
    assert(first_ != NULL);
    ValueType result = first_->data_;
    StackContainer<ValueType> *stack_container = first_->next_;
    delete first_;
    first_ = stack_container;
    --size_;
    return result;
  }
  void Clear() {
    StackContainer<ValueType> *stack_container;
    while (first_ != NULL) {
      stack_container = first_->next_;
      delete first_;
      first_ = stack_container;
    }
    last_ = NULL;
    size_ = 0;
  }
  ValueType &Top() const {
    return first_->data_;
  }
  ValueType &Back() const {
    return last_->data_;
  }
  void ForEach(void (*function)(ValueType *data)) {
    StackContainer<ValueType> *stack_container = first_;
    while (stack_container != NULL) {
      function(&(stack_container->data_));
      stack_container = stack_container->next_;
    }
  }
  int PositionInStack(const ValueType &value) {
    StackContainer<ValueType> *stack_container = first_;
    int counter = 0;
    while (stack_container != NULL) {
      if (stack_container->data_ == value)
        return counter;
      ++counter;
      stack_container  = stack_container->next_;
    }
    return -1;
  }
  bool PushTopIfUnique(const ValueType &value) {
    if (PositionInStack(value) == -1) {
      PushTop(value);
      return true;
    }
    return false;
  }
 private:
  size_t size_;
  StackContainer<ValueType> *first_, *last_;
};
#endif
 
#ifndef _MAIN_CC_
#define _MAIN_CC_
int main(int argc, char* argv[]) {
  srand(time(0));
  Stack<int> a_stack;
  for (int i = 0; i < 100; ++i)
    a_stack.PushTopIfUnique(rand()%30);
 
  printf("Size of stack: %d.\n", a_stack.size());
  while (a_stack.size() > 0)
    printf("%d ", a_stack.PopTopOrDie());
  printf("\n");
 
  int key;
  scanf("%d", &key);
  return 0;
}
#endif
Ввод из файла не стал делать, если сдали остальные лабы, сами справитесь.
Voka
202 / 194 / 59
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
27.12.2010, 13:41  [ТС] #3
Большое спасибо
Как я понял в скобках сами числа стека?
C++
1
a_stack.PushTopIfUnique(rand()%30);
Если да,то туда осталось запихнуть массив извлеченный из файла и дело в шляпе
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
27.12.2010, 14:58 #4
В общем-то да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2010, 14:58
Привет! Вот еще темы с ответами:

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

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

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

Работа со стеком, список - C++
Ребята, спасайте! обычно я прихожу сюда с недоделанным кодом/кодом в котором что-то неправильно работает, но тут времени совсем не...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.12.2010, 14:58
Ответ Создать тему
Опции темы

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