Производные классы в C++
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
. //
//------------------------------------------//
// Версия: 07.12.02 v. 1.01.2 //
//
//---------------------------------------------------------------------------
#include
#include
#include
#include
#include
#include
#define IMAX 4List{ // Класс "Список":Value; // Значение эл-та списка*Next; // @ след. эл-та списка:AddElList(char);OutpList(char);DelElList(int);AddElList(float, char);CreateList();(const char *Ident) // Конструктор класса
{<< "Lead the value of the first "; //Запрос на ввод
// значения Value; // Чтение первого эл-та= NULL; // 1-й эл-т ссылается на NULL
}() // Конструктор без параметров
{= 0; // Чтение значения нов. эл-та= NULL; // Нов. эл-т ссыл-ся на NULL
}
~List(); // Деструктор класса
};
//--------------------------------//
// Деструктор класса List //
//--------------------------------//::~List()
{*CurrEl, // Текущий эл-т списка
*TNext; // Следующий эл-т= this; // Первый эл-т - Объект((CurrEl->Next!= NULL) &&
(CurrEl->Next!= this)){= CurrEl->Next; // Сохраним адрес след. эл-та(CurrEl);= TNext; // След. эл-т сделать текущим
};(CurrEl); // Удалить последний эл-т<< "Object deleted" << '\n';();
}
//*****************************************************//
// Функция добавления элемента в конец односвязного списка //
//*****************************************************//List::AddElList(char R)
{*CurrEl, // Текущий эл-т списка
*NewEl = new List; // Новый эл-т списка
// Выдел-е памяти под нов. эл-т= this; // Текущий эл-т - Объект* KeyWord;= R ? this: NULL;(CurrEl->Next!= KeyWord){ // Переход в конец списка= CurrEl->Next;
}Next = NewEl; // Новый эл-т - в конец списка
}
//----------------------------------------------------------------//
// Функция вывода на экран односвязного списка //
//----------------------------------------------------------------//List::OutpList(char R)
{Count = 1; // Счетчик эл-тов списка*CurrEl; // Текущий эл-т списка= this; // Текущий эл-т - Объект* KeyWord;= R ? this: NULL;(CurrEl!= KeyWord){Next;++;
}
}
//-----------------------------------------------------//
// Функция удаления i-го элемента списка //
//-----------------------------------------------------//List::DelElList(int i)
{Count = 1; // Счетчик эл-тов списка*CurrEl, // Текущий эл-т списка
*PrevEl; // Предыдущий эл-т= this; // Текущий эл-т - Объект(Count Next;++;
}>Next = CurrEl->Next; // Пред. эл-т ссыл-ся на след.(CurrEl);
}
//--------------------------------------------------------------//
// Функция добавления элемента в конец списка //
// с заданием элемента из программы //
//--------------------------------------------------------------//List::AddElList(float Val, char R)
{*CurrEl,
*NewEl = new List;= this; // Текущий эл-т - Объект* KeyWord;= R ? this: NULL;(CurrEl->Next!= KeyWord){ // Переход в конец списка= CurrEl->Next;
}>Next = NewEl; // Новый эл-т - в конец списка>Value = Val; // Ввод знач-я нового эл-та>Next = KeyWord; // Новый эл-т ссылается на NULL
}
//----------------------------------------------------------------//
// Функция создания списка (ввод первого эл-та //
// списка, созд. конструктором без параметров) //
//-----------------------------------------------------------------//List::CreateList()
{*CurrEl;ch;Ok = 0;= this; // Текущий эл-т - Объект((Value == 0)||(Ok == 1)){<< "Lead the value of the first "; //Запрос на ввод
// значенияValue;;
}{ ch;((ch == 'N')||(ch == 'n'));((ch == 'Y')||(ch == 'y'))= 1;<< "Input Error";
}(1);
}
//---------------------------------------------------------------------------
//-------------------------------------//
// Производный класс: //
// двусвязный список //
//-------------------------------------//DLList: public List{*Prev; // Адрес пред. эл-та списка:(): List(){= NULL;
}AddElList();DelElList(int);AddElList(float);
};
//------------------------------------------------------------------------------//
// Функция добавления элемента в конец двусвязного списка //
//------------------------------------------------------------------------------//DLList::AddElList()
{*CurrEl, // Текущий эл-т списка
*NewEl = new DLList; // Новый эл-т списка
// Выдел-е памяти под нов. эл-т= this; // Текущий эл-т - Объект(CurrEl->Next!= NULL){ // Переход в конец списка= (DLList*) CurrEl->Next;
}Prev = CurrEl; // Новый эл-т ссыл-ся на пред.
}
//----------------------------------------------------------------------//
// Функция удаления i-го элемента двусвязного списка //
//----------------------------------------------------------------------//DLList::DelElList(int i)
{Count = 1; // Счетчик эл-тов списка*CurrEl, // Текущий эл-т списка
*PrevEl; // Предыдущий эл-т= this; // Текущий эл-т - Объект(Count Next;++;
}>Next = (DLList*) CurrEl->Next; // Пред. эл-т
// ссыл-ся на след.= (DLList*) PrevEl->Next;>Prev = CurrEl->Prev; // След. эл-т ссыл-ся на пред.(CurrEl);
}
//------------------------------------------------------------------//
// Функция добавления элемента в конец списка //
// (двусвязного) с заданием элемента из программы //
//------------------------------------------------------------------//DLList::AddElList(float Val)
{*CurrEl,
*NewEl = new DLList;= this; // Текущий эл-т - Объект(CurrEl->Next!= NULL){ // Переход в конец списка= (DLList*) CurrEl->Next;
}>Next = NewEl; // Новый эл-т - в конец списка>Value = Val; // Ввод знач-я нового эл-та>Next = NULL; // Новый эл-т ссылается на NULL
}
//---------------------------------------------------------------------------
//---------------------------------------//
// Производный класс: //
// закольцованный список //
//---------------------------------------//RLList: public List{:(){= 0;= this;
}
};
//---------------------------------------------------------------------------
// Главная функция программы тестирует работоспособность
// Класса Списокmain(int argc, char **argv)
{TestL;Number;ch = 'Y'; // Вспомогательная перем-яKey = ' ', *PKey;
// Приветствие<< "Hellow! You have ran the program of";<< " processing Lists just now." << '\n';<< "First part:" << '\n';<< "Please, enter you choose:" << '\n';= &Key;
// Главное меню{<< " 1 - New List" << '\n';<< " 2 - A