Учебная работа. Шпаргалка: Реализация списка

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Шпаргалка: Реализация списка

Реализация перечня

нужно воплотить перечень вида:


В программке предусмотрена работа со перечнем, которая содержит в себе:

· Создание новейшего вписка;

· Добавление элемента в перечень;

· Вывод перечня на экран;

· Сохранение данных перечня в файл;

· Чтение данных из файла;

· Удаление перечня из памяти компа;

· Поиск элемента в перечне;

· Сортировка перечня;

· Удаление элемента перечня.


Ввод данных в программку может осуществляться 2-мя методами: ввод с клавиатуры либо из файла.

Для работы с файлом нужно на соответственный запрос программки ввести имя файла, из которого будут взяты данные для построения перечня.

Для обычной
работы программки требуется PC совместимый комп и компилятор Borland 3.01 и выше. При внедрение другого сочетая черт системы на которой будет тестироваться программка вероятны некие расхождения с плодами теста, но в главном ничего ужасного произойти не обязано.


#include <iostream.h>

#include <fstream.h>

class List

{struct Tree

{int Body;

Tree *LP;

Tree *RP;

Tree(int Bdy=0) {Body=Bdy; LP=NULL; RP=NULL;}

~Tree() {Body=0; LP=NULL; RP=NULL;}

};

public:

List(int Digit=0);

Tree *Root;

List *LNext;

List *LPrev;

};

List::List(int Digit)

{Root=NULL;

for (int i=Digit*10; i<Digit*10+10; i++)

{Tree *PTree;

PTree=new Tree(i);

PTree->LP=NULL;

PTree->RP=NULL;

if (Root==NULL)

Root=PTree;

else

{Tree *PTree1=Root;

do

{if (PTree1->LP!=NULL)

PTree1=PTree1->LP;}

while (PTree1->LP!=NULL);

PTree1->LP=PTree;

PTree=NULL; PTree1=NULL;

}

}

}

class TreeWork : private List

{public:

void TreeWorkStart();

private:

int ElementQuantity;

int Mass;

int i;

List *BegP;

List *PList;

int MainMenu();

int Work(int Task);

int MakeNewList();

int AddElements();

int PrintList();

void EraseList();

int DeleteElement();

int FindElement();

int SubMenu();

int SubWork(int Task);

int SortByIncrease();

int SortByDecrease();

int SaveList();

int OpenList();

protected:

void GoThroughTree(Tree *L);

void Erase(Tree *L);

};

int TreeWork::MainMenu()

int TreeWork::SubMenu()

int TreeWork::SubWork(int Task)

{switch (Task)

{case 1 : SortByIncrease(); break; //Increase

case 2 : SortByDecrease(); break; //Decrease

}

return 0;

}

int TreeWork::Work(int Task)

{switch (Task)

{case 1 : ElementQuantity=MakeNewList(); break; //Make New List

case 2 : ElementQuantity+=AddElements(); break; //Add Element

case 3 : PrintList(); break; //Print List

case 4 : DeleteElement(); break; //Delete Element

case 5 : SaveList(); break; //Save List

case 6 : ElementQuantity=0; EraseList(); break; //Erase List

case 7 : OpenList(); break; //Open File

case 8 : FindElement(); break; //Find Element

case 9 : SubWork(SubMenu()); break; //Sort List

case 0 : EraseList(); return -1; //Exit

}

return 0;

}

void TreeWork::TreeWorkStart()

{ElementQuantity=0;

do {} while (Work(MainMenu())!=-1);

}

int TreeWork::MakeNewList()

{if (BegP!=NULL)

{cout<<endl<<«You have existing list!»; return 0;}

int Quant;

cout<<endl<<«Input quantity of elements: «;

do

{cin>>Quant;

if (Quant<1)

cout<<endl<<«Error! Try againt: «;

}

while (Quant<1);

for (int i=0; i<Quant; i++)

{cout<<endl<<«Input digit: «;

int Digit; cin>>Digit;

PList=new List(Digit);

if (BegP==NULL)

{BegP=PList;

BegP->LNext=BegP;

BegP->LPrev=BegP;

PList=NULL;}

else

{List *PList1=BegP->LPrev;

if (PList1==BegP)

{BegP->LNext=PList;

BegP->LPrev=PList;

PList->LNext=BegP;

PList->LPrev=BegP;

PList=NULL; PList1=NULL;}

else

{BegP->LPrev=PList;

PList1->LNext=PList;

PList->LNext=BegP;

PList->LPrev=PList1;

PList=NULL; PList1=NULL;}

}

}

return Quant;

}

int TreeWork::AddElements()

{if (BegP==NULL)

{MakeNewList(); return 0;}

int Quant;

cout<<endl<<«Input quantity of elements: «;

do

{cin>>Quant;

if (Quant<1)

cout<<endl<<«Error! Try again: «;

}

while (Quant<1);

for (int i=0; i<Quant; i++)

{cout<<endl<<«Input digit: «;

int Digit;

cin>>Digit;

PList=new List(Digit);

List *PList1=BegP->LPrev;

if (PList1==BegP)

{BegP->LNext=PList;

BegP->LPrev=PList;

PList->LPrev=BegP;

PList->LNext=BegP;

PList1=NULL; PList=NULL;}

else

{BegP->LPrev=PList;

PList->LNext=BegP;

PList->LPrev=PList1;

PList1->LNext=PList;

PList=NULL; PList1=NULL;}

}

return Quant;

}

int TreeWork::PrintList()

{if (BegP==NULL)

{cout<<endl<<«The list is empty!»<<endl; return -1;}

cout<<endl<<«Total elements: «<<ElementQuantity<<endl;

PList=BegP;

int i=1;

do

{cout<<endl<<» «<<i<<» element: «<<endl;

GoThroughTree(PList->Root);

cout<<endl;

i++;

PList=PList->LNext;}

while (PList!=BegP);

return 0;

}

void TreeWork::GoThroughTree(Tree *L)

{Tree *PL=L, *PL1;

if (PL->LP!=NULL)

{PL1=PL;

PL=PL->LP;

cout<<«(«<<PL1->Body<<