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

Быстрый стек, с малым обьемом памяти - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как считать строку? http://www.cyberforum.ru/cpp-beginners/thread84194.html
Зачем надо при считывания переменной типа string надо писать getline(cin, ...)? Зачем там cin? Разве там ожет быть что либо иное?
C++ Оценка времени работы Можете оценить время работы алгоритма? http://acm.timus.ru/problem.aspx?space=1&num=1100 - это задача, на которую он проходит По моему мнению это O( 3*(N+M) ), или просто O(N+M), где N - количество команд, M - количество задач #include <iostream> #define FOR(i,a,b) for (int i(a),_b(b); i < _b; ++i) int main() { http://www.cyberforum.ru/cpp-beginners/thread84187.html
C++ считывает текст из файла
Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел.
В чём ошибка? C++
мне надо чтоб програма получив строку проверила её и если в ней есть двузначные числа выводила всю строку. что я не так сделал? #include "stdafx.h" #include "iostream" #include "cctype" using namespace std; int _tmain(int argc, _TCHAR* argv) { bool flag; char *c=new char;
C++ Вырезать из матрицы всё лишнее, чтобы осталась только закрашенная часть http://www.cyberforum.ru/cpp-beginners/thread84170.html
Как можно вырезать из матрицы всё лишнее, чтобы осталась только закрашенная часть?
C++ Постфиксная и префиксная форма инкремента и декремента. Само задание: Написать программу с примерами постфиксной и префиксной формами инкремента и декремента. Число вводится с клавиатуры. #include<iostream.h> #include<stdio.h> int main(int args) { //Вводим с клавиатуры значение a и вычисляем значения c и d int a; int c; int d; подробнее

Показать сообщение отдельно
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
10.01.2010, 19:00  [ТС]     Быстрый стек, с малым обьемом памяти
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
#include <iostream>
#define FOR(i,a,b) for (int i(a), _n(b); i < _n; ++i)
 
struct node
{
    node(){prev = 0; inf = 0;}
    ~node(){}
    int inf;
    node* prev;
};
 
class stack
{
public:
    stack(){head = 0;}
    ~stack(){}
    void push(int &n)
    {
        node* tmp = new node;
        tmp->inf = n;
        tmp->prev = head;
        head = tmp;
    }
    int pop()
    {
        int d = head->inf;
        node* tmp = head;
        head = head->prev;
        delete tmp;
        return d;
    }
private:
    node* head;
};
 
int main()
{
    int n;
    scanf("%d",&n);
    stack a[1000];
    while (n--)
    {
        int d;
        char s[10];
        scanf("%s%d",&s,&d);
        if (s == "PUSH")
        {
            int dd;
            scanf("%d",&dd);
            a[d-1].push(dd);
        }
        else printf("%d",a[d-1].pop());
    }
    return 0;
}
неверное сравнение строк, можете помочь?

Добавлено через 2 минуты
GRANDEATH, я просто не могу понять как делать линковку, какому стеку отвечает какой элемент + нам нужет top..

Добавлено через 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
#include <iostream>
#define FOR(i,a,b) for (int i(a), _n(b); i < _n; ++i)
 
struct node
{
    node(){prev = 0; inf = 0;}
    ~node(){}
    int inf;
    node* prev;
};
 
class stack
{
public:
    stack(){head = 0;}
    ~stack(){}
    void push(int &n)
    {
        node* tmp = new node;
        tmp->inf = n;
        tmp->prev = head;
        head = tmp;
    }
    int pop()
    {
        int d = head->inf;
        node* tmp = head;
        head = head->prev;
        delete tmp;
        return d;
    }
private:
    node* head;
};
 
int main()
{
    int n;
    scanf("%d",&n);
    stack a[1000];
    while (n--)
    {
        int d;
        char s[10];
        scanf("%s%d",&s,&d);
        if (s[1] == 'U')
        {
            int dd;
            scanf("%d",&dd);
            a[d-1].push(dd);
        }
        else printf("%d\n",a[d-1].pop());
    }
    return 0;
}
Добавлено через 1 минуту
кто знает сколько мугут потянуть указатели между элементами стека?

Добавлено через 2 минуты
этот код не канает, 10-ий тест - выделено пямяти: 1 653 КБ
 
Текущее время: 00:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru