0 / 0 / 0
Регистрация: 28.09.2015
Сообщений: 29
1

Простой дек

01.04.2016, 21:06. Показов 3225. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго вечера

Столкнулся со следующей проблемой. Есть задание на простой дек:
Реализуйте структуру данных "дек". Напишите программу, содержащую описание дека и моделирующую работу дека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:

push_front

Добавить (положить) в начало дека новый элемент. Программа должна вывести ok.

push_back

Добавить (положить) в конец дека новый элемент. Программа должна вывести ok.

pop_front

Извлечь из дека первый элемент. Программа должна вывести его значение.

pop_back

Извлечь из дека последний элемент. Программа должна вывести его значение.

front

Узнать значение первого элемента (не удаляя его). Программа должна вывести его значение.

back

Узнать значение последнего элемента (не удаляя его). Программа должна вывести его значение.

size

Вывести количество элементов в деке.

clear

Очистить дек (удалить из него все элементы) и вывести ok.

exit

Программа должна вывести bye и завершить работу.

Гарантируется, что количество элементов в деке в любой момент не превосходит 100. Все операции:

pop_front,
pop_back,
front,
back
всегда корректны.

Количество элементов во всех структурах данных не превышает 10000, если это не указано особо.
________________________________________________________________________________ ____________

И собственно мой код:
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
#include <iostream>
#include <string>
using namespace std;
 
#define SIZE 10000
struct deque
{
    int m[SIZE];
    int _size = 0, start = 0, end = 0;
    void push_front(int n)
    {
        _size++;
        start = (start - 1 + SIZE) % SIZE;
        m[start] = n;
    }
    void push_back(int n)
    {
        _size++;
        end = (end + 1) % SIZE;
        m[end] = n;
    }
    int pop_front()
    {
        _size--;
        end = (end + 1) % SIZE;
        return m[end];
    }
    int pop_back()
    {
        _size--;
        end = (start - 1 + SIZE) % SIZE;
        return m[end];
    }
    int front(){return m[start];}
    int back(){return m[end];}
    int size(){return _size;}
    void clear()
    {
        _size = 0;
        start = end;
    }
};
 
int main()
{
    deque d;
    string s;
    int n;
    while (cin >> s)
    {
        if (s == "push_front")
        {
            cin >> n;
            d.push_front(n);
            cout << "ok\n";
        }
        else if (s == "push_back")
        {
            cin >> n;
            d.push_back(n);
            cout << "ok\n";
        }
        else if (s == "pop_front")
        {
            cout << d.pop_front() <<endl;
        }
        else if (s == "pop_back")
        {
            cout << d.pop_back() << endl;
        }
        else if (s == "front")
        {
            cout << d.front()<<endl;
        }
        else if (s == "back")
        {
            cout << d.back()<<endl;
        }
        else if (s == "size")
        {
            cout << d.size() << endl;
        }
        else if (s == "clear")
        {
            d.clear();
            cout <<"ok\n";
        }
 
        else if (s == "exit"){
            cout << "bye\n";
            return 0;
        }
    }
    return 0;
}
задача заходит на 38%. Ошибку никак не могу найти, скорее всего в алгоритме.
Спасибо заранее за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2016, 21:06
Ответы с готовыми решениями:

Простой дек
Помогите решить задачу : Реализуйте структуру данных &quot;дек&quot;. Напишите программу, содержащую...

дек
как сделать такую вещь? реализовать и протестировать контейнерный класс динамической структуры...

Шаблонный дек
Задача реализовать шаблонный класс дека, и класс Итератора для навигации по деку. До добавления...

Дек символов
Доброго времени суток всем. У меня такая проблема: есть задача - Реализовать класс &quot;Дек...

1
68 / 68 / 37
Регистрация: 26.10.2013
Сообщений: 198
02.04.2016, 03:12 2
Цитата Сообщение от xGoooDx Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
int pop_front() { 
_size--; 
end = (end + 1) % SIZE; 
return m[end]; 
} 
int pop_back() { 
_size--; 
end = (start - 1 + SIZE) % SIZE; 
return m[end]; 
}
Проблема вероятно здесь. Хотя и не понятно, что за упомянутые 38% и к чему они.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int pop_front() {
  int n = m[start];
  _size--;
  start = (start + 1 + SIZE) % SIZE;
  return n;
}
int pop_back() {
  int n = m[end];
  _size--;
  end = (end - 1 + SIZE) % SIZE;
  return n;
}
0
02.04.2016, 03:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2016, 03:12
Помогаю со студенческими работами здесь

Шаблонный дек
Доброго времени суток. Пытаюсь написать шаблонный дек, но не получается сделать многофайловый...

Полный дек
Добрый день! мучаюсь с задачей - реализовать тип и функции (инициализация,добавление\извлечение...

Очередь и дек С++
Ребят, помогите пожалуйста сделать небольшую программу, ну просто горит(((. :wall: Разработать...

Дек-шаблон
Доброй ночи. У меня вопрос. Я хочу реализовать дек, а потом на его основе сделать шаблон. В деке...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru