Реализация задания в оконном приложении. Вид формы и полученные результаты представлены на рис
Вид формы и полученные результаты представлены на рис. 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; } }
|