0 / 0 / 0
Регистрация: 03.12.2020
Сообщений: 8

Дек неограниченного размера

07.12.2020, 02:17. Показов 6099. Ответов 6

Студворк — интернет-сервис помощи студентам
Условие задачи:

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

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

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

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

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

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

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

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

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

exit
Программа должна вывести bye и завершить работу.
Размер дека должен быть ограничен только размером доступной оперативной памяти. Перед исполнением операций pop_front, pop_back, front, back программа должна проверять, содержится ли в деке хотя бы один элемент. Если во входных данных встречается операция pop_front, pop_back, front, back, и при этом дек пуст, то программа должна вместо числового значения вывести строку error.

Входные данные
Вводятся команды управления деком, по одной на строке.

Выходные данные
Требуется вывести протокол работы дека, по одному сообщению на строке.

Например:

ВводРезультат
push_backok
back1
exitbye
size0
push_back 1ok
size1
push_back 2ok
size2
push_front 3ok
size3
exitbye

Мой код:
Python
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
size = 0 
deque = []
queue_head = 0
queue_tail = 0 
 
def isempty():
    return len(deque) == 0
 
def push_back(val):
    global deque, size
    deque.append(val)
    size += 1
    print('ok')
 
 
def push_front(val):
    global deque, size
    deque.insert(0, val)
    size += 1
    print('ok')
 
 
def pop_front():
  global queue_head, size
  if not isempty():
    queue_head = deque[0]
    size -= 1
    return queue_head
  else:
    return 'error'
 
def pop_back():
  global queue_tail, size
  if not isempty():
    queue_tail = deque[-1]
    size -= 1
    return queue_tail
  else:
    return 'error'
 
def front():
  if not isempty(): 
    return deque[0]
  else:
    print('error')
 
def back():
  if not isempty(): 
    return deque[-1]
  else:
    print('error')
 
def clear():
  global deque
  deque[:] = []
  print('ok')
 
while True:
  s = input().split(' ')
  if s[0] == 'push_front':
    push_front(int(s[1]))
  elif s[0] == 'push_back':
    push_back(int(s[1]))
  elif s[0] == 'pop_back':
    print(pop_back())
  elif s[0] == 'pop_front':
    print(pop_front())
  elif s[0] == 'front':
    print(front())
  elif s[0] == 'back':
    print(back())
  elif s[0] == 'size':
    print(size)
  elif s[0] == 'clear':
    clear()
  elif s[0] == 'exit':
    print('bye')
    break
Прошу помочь найти ошибку.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2020, 02:17
Ответы с готовыми решениями:

Дек неограниченного размера
Помогите пожалуйста! Реализуйте структуру данных "дек". Напишите программу, содержащую описание дека и моделирующую работу дека,...

Создание универсальной очереди неограниченного размера
Консольное приложение должно быть выполнено с применением технологии объектно-ориентированого программирования. В шаблоне класса...

Реализовать дек ограниченного размера на базе массива
Деком называют структуру, которая сочетает очередь и стек : добавлять и убирать элементы можно с обоих концов. Надо реализовать дек...

6
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,318
07.12.2020, 10:16
Skiffi_,
Python
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
from collections import deque
 
d = deque()
n = str(input()).split()
 
 
def push_back(elem):
    d.append(elem)
    print("ok")
 
 
def push_front(elem):
    d.appendleft(elem)
    print("ok")
 
 
def pop_front():
    print(d.popleft())
 
 
def pop_back():
    print(d.pop())
 
 
def back():
    print(d[-1])
 
 
def front():
    print(d[0])
 
 
def size():
    print(len(d))
 
 
def clear():
    d.clear()
    print("ok")
 
 
def exit():
    print("bye")
 
 
while n[0] != 'exit':
    if n[0] == 'push_back':
        push_back(n[1])
    elif n[0] == 'push_front':
        push_front(n[1])
    elif n[0] == 'pop_back':
        if len(d) > 0:
            pop_back()
        else:
            print('error')
    elif n[0] == 'pop_front':
        if len(d) > 0:
            pop_front()
        else:
            print('error')
    elif n[0] == 'back':
        if len(d) > 0:
            back()
        else:
            print('error')
    elif n[0] == 'front':
        if len(d) > 0:
            front()
        else:
            print('error')
    elif n[0] == 'size':
        size()
    elif n[0] == 'clear':
        clear()
    n = str(input()).split()
exit()
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,318
07.12.2020, 11:00
Catstail, удалить можно?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
07.12.2020, 11:25
Gdez, Вы про моё замечание? Могу. А код пусть остаётся. У меня не так много единомышленников.
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,318
07.12.2020, 12:00
Catstail, я про удаление своего кода , если он по соображениям модераторов по тем или причинам некорректен (считаю, на то они и существуют). Претензий не буду иметь от слова совсем
0
1 / 1 / 0
Регистрация: 03.12.2020
Сообщений: 4
07.12.2020, 15:26
Михаил,короч там это, ну ты понял
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
07.12.2020, 16:31
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Python
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
class Deque:
    def __init__(self, *content: any):
        self.content: [any] = list(content)
 
    def push_front(self, element: any) -> str:
        self.content.insert(0, element)
        return "ok"
 
    def push_back(self, element: any) -> str:
        self.content.append(element)
        return "ok"
 
    def pop_front(self) -> any:
        return self.content.pop(0) if self.content else "error"
 
    def pop_back(self) -> any:
        return self.content.pop(-1) if self.content else "error"
 
    def front(self) -> any:
        return self.content[0] if self.content else "error"
 
    def back(self) -> any:
        return self.content[-1] if self.content else "error"
 
    def size(self) -> int:
        return len(self.content)
 
    def clear(self):
        self.content.clear()
        return "ok"
 
 
deq = Deque()
for line in iter(input, "exit"):
    name, *args = line.split()
    print(getattr(deq, name)(*args))
print("bye")
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2020, 16:31
Помогаю со студенческими работами здесь

Стек и дек: Почему стек есть, с ним я могу работать, а дек я должен сам описывать?
Где взять этот дек? Почему я не могу в C# найти его и обратиться к нему? Почему стек есть, с ним я могу работать, а дек я должен сам...

Построение неограниченного числа графиков
Нужно подкорректировать программу для того что бы можно было вписать сразу несколько функций и по ним построить графики на одном поле. Есть...

Ввод неограниченного числа строк
Здравствуйте! Возникла проблема. Программа должна читать заранее не известное число строк, и выводить ответ (тестирующая система). Как в...

БД с хранением неограниченного числа комментариев и вложений
Всем привет! Ситуация следующая: мне нужно создать базу, в которую с формы я мог бы вносить определенные данные в таблицу. Все это...

запуск неограниченного количества программ калькулятора
Помогите написать задачу по системному программному обеспечению. "Запуск неограниченного количества программ калькулятора и выборочное их...


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

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

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru