Производные классы в 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