Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
 Аватар для Ded_Vasilij
233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103

Дек символов

15.02.2013, 20:23. Показов 4400. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток всем.
У меня такая проблема: есть задача -
Реализовать класс "Дек символов" (на базе списка).

Реализовать класс "Массив деков". Длина массива определяется во время
инициализации и в дальнейшем не меняется. Массив должен хранить сами деки,
а не указатели на них. Доступ к элементам массива осуществляется с помощью
квадратных скобок.
Начал делать, но поскольку с классами работаю впервые, то не совсем разобрался как это делать.
вот моя реализация:
файл L2.h
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
#pragma once
class L2_elem
{
    char el;
    L2_elem* next;
    L2_elem* prev;
public:
    L2_elem();                                      //занулить указатели
    L2_elem (char c, L2_elem* n,L2_elem* p);        //пприсваивание значений
    char get_el();
    L2_elem* get_n();
    L2_elem* get_p();
};
class L2
{
    L2_elem* head;
    
public:
    L2();                               // инициализация
    ~L2();                              // деструктор
    L2(const L2 &List);                 // копирование
    L2& operator = (const L2& List);    // оператор перегрузки
    char get_el (int i);                // получить элемент
    void put (char el);                 // добавить элемент
    void del();                         // удалить элемент
    void print (L2 List);               // печать
    int size (L2 List);                 // размер списка
};
файл L2.cpp
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
#include <iostream>
#include "L2.h"
L2_elem :: L2_elem()
{
    L2_elem.next = 0;// error C2143: синтаксическая ошибка: отсутствие ";" перед "."
 
    L2_elem.prev = 0;
}
char L2_elem :: get_el()
{
    return el;
}
 
L2_elem*  L2_elem :: get_n()
{
    return L2_elem.next ;
}
 
 
 
L2 :: L2()
{
    head = new L2_elem;                             // по умолчанию вызывается конструктор без параметров L2_elem
}
Я понимаю, что я сделал чего-то не так, но пока не могу понять чего, ошибка мелкая, из=за нее вся работа встала. Подскажите пожалуйста чего я не так делаю
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2013, 20:23
Ответы с готовыми решениями:

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

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

Простой дек
Всем доброго вечера Столкнулся со следующей проблемой. Есть задание на простой дек: Реализуйте структуру данных &quot;дек&quot;....

24
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
23.02.2013, 19:57
Студворк — интернет-сервис помощи студентам
Ошибка №1. Если в цикле ты сделал переход head = head->next и он стал равен 0, то что удалится при вызове delete head->prev?
Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
void L2 :: makeEmpty()
{
    while (head !=0)
    {
        head = head->next; 
        delete head->prev;
    }
    head->next = 0;
}
Ошибка №2.
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
строка 43.
уже сам head равен NULL
Ошибка №3 (логическая)
Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
C++
1
2
3
4
5
6
L2 :: L2 (const L2 &List)
{
...
        pushHead(c);
....
}
ты скопируешь список задом наперед. Надо pushTail
1
 Аватар для Ded_Vasilij
233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
23.02.2013, 21:23  [ТС]
Как обычно по мелочи затупил. Внимательнее надо быть.
вот рабочая makeEmpty()

C++
1
2
3
4
5
6
7
8
9
10
11
void L2 :: makeEmpty()
{   
    L2_elem* p = 0;
    while (head !=0)
    {
        p = head;
        head = head->next;          
        delete p;
    }
    head = 0;
}
А по поводу оператора присваивания - по моему надо сперва очистить второй список с помощью makeEmpty, а затем просто скопировать с помощью конструктора копирования.
И все будет в шоколаде. По моему так
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
23.02.2013, 22:02
про оператор присваивания я уже писал раньше. вначале очищаешь список, а потом добавляешь в него элементы из другого списка с помощью pushTail

Добавлено через 12 минут
ты не сможешь вызвать конструктор копии как функцию
0
 Аватар для Ded_Vasilij
233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
07.03.2013, 18:27  [ТС]
вроде бы написал L2, со всеми необходимыми методами, осталось только вставку и удаление элемента после заданного добавить.
Подскажите пожалуйста, что можно оптимизировать в коде, и с какого бока подступиться к деку, точнее говоря, насколько я понял, у дека будут те же методы, что и у L2, но как это правильно организовать?
Вложения
Тип файла: rar task 3.rar (4.0 Кб, 6 просмотров)
0
 Аватар для Ded_Vasilij
233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
07.03.2013, 18:43  [ТС]
при написании функции
C++
1
AddAfter(int i, char c){}
возникла проблема: мне нужно определить, не вылетает ли i за границы списка, но я не могу получить доступ к функции size(), this.size() тоже ошибку пишет. Подскажите, как обмануть судьбу пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.03.2013, 18:43

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru