Помогите пожалуйста с созданием операторов для дека С++!!
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Дополнить класс дека целых чисел,л, разработанный на этапе , следующими операциями:
𝑒𝑙𝑒𝑚𝑒𝑛𝑡 + 𝐷𝑒𝑞𝑢𝑒 — добавление в дек 𝐷𝑒𝑞𝑢𝑒 целочисленного элемента со значением
𝑒𝑙𝑒𝑚𝑒𝑛𝑡 слева.
𝐷𝑒𝑞𝑢𝑒 + 𝑒𝑙𝑒𝑚𝑒𝑛𝑡 — добавление в дек 𝐷𝑒𝑞𝑢𝑒 целочисленного элемента со значением
𝑒𝑙𝑒𝑚𝑒𝑛𝑡 справа.
− − 𝐷𝑒𝑞𝑢𝑒 — префиксная операция “минус-минус”, удаление элемента из дека 𝐷𝑒𝑞𝑢𝑒
слева.
𝐷𝑒𝑞𝑢𝑒 − − — постфиксная операция “минус-минус”, удаление элемента из дека 𝐷𝑒𝑞𝑢𝑒
справа
𝐷𝑒𝑞𝑢𝑒2 = 𝐷𝑒𝑞𝑢𝑒1 — присваивание значения объекта 𝐷𝑒𝑞𝑢𝑒1 объекту 𝐷𝑒𝑞𝑢𝑒2.
коды первого этапа:
//#include<stdio.h>
//#include<stdlib.h>
//#include«intdeque.hpp»
/*******/
/*** Конструктор копирования */
/*******/
IntDeque :: IntDeque(IntDeque &_deque)
{
buffer = 0;
left = 0;
right = 0;
IntDequeElement bg = _deque.left;
while (bg)
{
AddRight(bg->GetElement());
bg =bg->GetNext();
}
};
/*******/
/Добавление элемента со значением [element] слева/
/*******/
int IntDeque :: AddLeft(int element){
//————————————————————————-/
if (IsEmpty()) {
right = left = new IntDequeElement(element);
buffer = element;
return &buffer;
}
else {
IntDequeElement mp = new IntDequeElement(element);
buffer = element;
mp->SetNext(left);
left->SetPrev(mp);
left = mp;
return &buffer;
}
};
/*******/
/Добавление элемента со значением [element] справа/
/*******/
int IntDeque :: AddRight(int element){
//————————————————————————-/
if (IsEmpty()) {
right = left = new IntDequeElement(element);
buffer = element;
return &buffer;
}
else
{
IntDequeElement mp = new IntDequeElement(element);
buffer = element;
mp->SetPrev(right);
right->SetNext(mp);
right = mp;
return &buffer;
}
};
/*******/
/** Удаление слева ***/
/*******/
int IntDeque :: RemoveLeft(){
//————————————————————————-/
IntDequeElement mp;
if (IsEmpty())
{
return NULL;
}
else if(left==right)
{
buffer = left->GetElement();
mp = left;
left = NULL;
right = NULL;
delete mp;
return &buffer;
}
else
{
buffer = left->GetElement();
mp = left;
left = left->GetNext();
left->SetPrev(NULL);
delete mp;
return &buffer;
}
};
/********/
/** Удаление справа **/
/*******/
int IntDeque :: RemoveRight(){
//————————————————————————-/
IntDequeElement mp;
if (IsEmpty()) {
return NULL;
}
else if (left == right) {
buffer = right->GetElement();
mp = left;
left = right = NULL;
delete mp;
return &buffer;
}
else {
buffer = right->GetElement();
mp = right;
right = right->GetPrev();
right->SetNext(NULL);
delete mp;
return &buffer;
}
};
/********/
/* Получение значения поля buffer */
/*******/
int IntDeque :: GetElement(){
//————————————————————————-/
return (buffer);
};
/*******/
/* Проверка дека на пустоту **/
/*******/
int IntDeque :: IsEmpty(){
//————————————————————————-/
if (left == NULL && right == NULL) {
return 1;
}
else
{
return 0;
}
};
/********/
/*** Деструктор ****/
/*******/
IntDeque :: ~IntDeque(){
//————————————————————————-/
IntDequeElement mp;
while (!IsEmpty()) {
if (left == right) {
mp = left;
left = right = NULL;
delete mp;
}
else
{
mp = left;
left = left->GetNext();
left->SetPrev(NULL);
delete mp;
}
}
};
ФАЙЛ .HPP :
class IntDequeElement{
int element;
IntDequeElement * next;
IntDequeElement * prev;
public:
IntDequeElement(){
element = 0;
next = NULL;
prev = NULL;
}
IntDequeElement(int _element){
element = _element;
next = NULL;
prev = NULL;
}
IntDequeElement(int _element, IntDequeElement * _prev, IntDequeElement * _next){
element = _element;
prev = _prev;
next = _next;
}
void SetElement(int _element){
element = _element;
}
int GetElement(){
return element;
}
void SetNext(IntDequeElement * _next){
next = _next;
}
IntDequeElement * GetNext(){
return next;
}
void SetPrev(IntDequeElement * _prev){
prev = _prev;
}
IntDequeElement * GetPrev(){
return prev;
}
};
class IntDeque{
IntDequeElement * left;
IntDequeElement * right;
int buffer;
public:
IntDeque(){
left = NULL;
right = NULL;
buffer = 0;
}
IntDeque(IntDeque& _deque);
int AddLeft(int element);
int AddRight(int element);
int RemoveLeft();
int RemoveRight();
int GetElement();
int IsEmpty();
~IntDeque();
};