![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Написать программу, содержащую основные функции обработки двунаправленного списка, информационная часть которого представляет собой целые числа.
Реализация задания в оконном приложении
Вид формы и полученные результаты представлены на рис. 4.2.
Приведем только тексты функций-обработчиков соответствующих кнопок:
...
struct Spis2 {
int info;
Spis2 *next, *prev;
} *begin, *end, *t;
//---------------------------------------------------------------------------
void Create_Spis2(Spis2**, Spis2**, int);
void Add_Spis2(int, Spis2**, Spis2**, int);
void View_Spis2(int, Spis2*);
void Del_All(Spis2**);
Рис. 4.2
//----------------------------- Текст функции-обработчика кнопки Создать ------------
int i, in = StrToInt(Edit1->Text);
if(begin!= NULL){
ShowMessage("Освободите Память!");
return;
}
Create_Spis2(&begin, &end, in);
Memo1->Lines->Add("Начало = " + IntToStr(begin -> info));
//--------------------------- Текст функции-обработчика кнопки Добавить ------------
int i, in = StrToInt(Edit1->Text), kod = RadioGroup1->ItemIndex;
String Str[2] = {"в начало ", "в конец "};
Add_Spis2(kod, &begin, &end, in);
if(kod == 0) t = begin;
else t = end;
Memo1->Lines->Add("Добавили " + Str[kod] + IntToStr(t -> info));
//---------------------------- Текст функции-обработчика кнопки Просмотреть -----
if(!begin){
ShowMessage("Список Пуст!");
return;
}
if(RadioGroup1->ItemIndex == 0) {
t = begin;
Form1->Memo1->Lines->Add("-- С начала --");
}
else {
t = end;
Form1->Memo1->Lines->Add("--- С конца --");
}
View_Spis2(RadioGroup1->ItemIndex, t);
//----------------------------- Текст функции-обработчика кнопки Очистить ---------
Del_All(&begin);
ShowMessage("Память освобождена!");
//---------------------------- Текст функции-обработчика кнопки EXIT -----------------
if(begin!= NULL) Del_All(&begin);
Close();
//------------------- Создание первого элемента -----------------------------
void Create_Spis2(Spis2 **b, Spis2 **e, int in) {
t = new Spis2;
t -> info = in;
t -> next = t -> prev = NULL;
*b = *e = t;
}
//------------------- Добавление элемента в список --------------------------
void Add_Spis2(int kod, Spis2 **b, Spis2 **e, int in) {
t = new Spis2;
t -> info = in;
if(kod == 0){
t -> prev = NULL;
t -> next = *b;
(*b) -> prev = t;
*b = t;
}
else {
t -> next = NULL;
t -> prev = *e;
(*e) -> next = t;
*e = t;
}
}
//--------------------- Просмотр элементов списка ---------------------------
void View_Spis2(int kod, Spis2 *t) {
while(t!= NULL) {
Form1->Memo1->Lines->Add(t->info);
// В консольном приложении: cout << t->info << endl;
if(kod == 0) t = t->next;
else t = t->prev;
}
}
Дата публикования: 2015-11-01; Прочитано: 217 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!