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

Задачка на стеки - C++

Восстановить пароль Регистрация
 
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
06.12.2011, 16:26     Задачка на стеки #1
Здравствуйте господа. Помогите пожалуйста сделать задачку на стеки, если у вас это не займет много времени. Огромное спасибо заранее!
Вот задачка:
Дано n стеков. С ними делают k операций push(i, v), top(i), pop(i) - добавить в стек i число v, показать число на вершине стека i и удалить из вершины стека i (при этом результат показывается). Результат должен содержать столько чисел, сколько операций top и pop было сделано. Изначально все стеки пусты. Все операции корректны. Общее число операций - не больше 10^6. Число стеков максимум 100. Одновременно во всех стеках не может лежать больше 10^5 элементов.

Ввод
В первой строке записано два числа n и k, n - количество стеков, k - количество операций. Следующие k строк содержат описания операций. Все числа в стеках не превосходят по модулю 10^6.

Вывод
В первую строку выведете через пробел результаты всех операций top и pop, в том же порядке как они даны во входном файле.

Пример

Ввод
100 6
pysh (100,1)
push (100,3)
pop (100)
push (50,3)
top (50)
top (100)

Вывод
3 3 1

Добавлено через 12 минут
Пожалуйста

Добавлено через 16 часов 33 минуты
Друзья, помогите пожалуйста ((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2011, 16:26     Задачка на стеки
Посмотрите здесь:

C++ Стеки
Стеки в С C++
стеки в С++ C++
Стеки C++
C++ Стеки на С!
C++ Стеки
C++ Стеки
C++ Стеки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
06.12.2011, 23:06     Задачка на стеки #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
#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
using namespace std;
 
struct list {
 int inf;
 list *next;
};
 
class stack {
    list *head;
public:
    stack() {
    head = NULL;
    }
    void pop() {
        list *r = head;
        head = r->next;
        delete r;
    }
    void push(int i) {
        list *r = new list;
        r->inf = i;
        r->next = head;
        head = r;
    }
    int top() {
        return head->inf;
    }
    int empty() {
        if(!head) return 1;
        else return 0;
    }
};
int main() {
  int n, k;
 
  scanf("%d %d\n", &n, &k);
  stack *a = new stack[n];
 
  for (int i = 0; i < k; i++) {
    char c;
    string s = "";
    do {
      scanf("%c", &c);
      if (c != '(') s = s + c;
    } while(c != '(');
    int m;
    if (s == "PUSH") {
      int l;
      scanf("%d %*c%d%*c", &m, &l);
      a[m-1].push(l);
    }
    else if (s == "POP") {
      scanf("%d%*c", &m);
      cout << a[m-1].top() << " ";
      a[m-1].pop();
    }
    else if (s == "TOP") {
      scanf("%d%*c", &m);
      cout << a[m-1].top() << " ";
    }
    if (i < k-1) scanf("\n");
  }
  return 0;
}
Yandex
Объявления
06.12.2011, 23:06     Задачка на стеки
Ответ Создать тему
Опции темы

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