Реализация задания в оконном приложении
Вид формы и полученные результаты представлены на рис. 3.2. Рис. 3.2
Приведем только тексты функций, соответствующих кнопок: ... struct Stack { // Декларация структурного типа int info; Stack * next; } *begin, *t; //------------ Декларации прототипов функций пользователя ---------- Stack* InStack(Stack*, int); void View(Stack*); void Del_All(Stack **); //----------------------------- Текст функции-обработчика кнопки Создать ------------ int i, in, n = StrToInt(Edit1-> Text); if(begin! = NULL){ ShowMessage(" Освободите память! "); return; } for(i = 1; i < = n; i++){ in = random(20); begin = InStack(begin, in); } Memo1-> Lines-> Add(" Создали " + IntToStr(n) + " -ть."); //--------------------------- Текст функции-обработчика кнопки Добавить ------------ int i, in, n = StrToInt(Edit1-> Text); for(i = 1; i < = n; i++){ in = random(20); begin = InStack(begin, in); } Memo1-> Lines-> Add(" Добавили " + IntToStr(n) + " -ть."); //---------------------------- Текст функции-обработчика кнопки Просмотреть ----- if(! begin){ ShowMessage(" Стек Пуст! "); return; } Memo1-> Lines-> Add(" --- Элементы ---"); View(begin); //----------------------------- Текст функции-обработчика кнопки Очистить --------- if (begin! = NULL) Del_All(& begin); ShowMessage(" Память освобождена! "); //---------------------------- Текст функции-обработчика кнопки EXIT ----------------- if(begin! = NULL) Del_All(& begin); Close(); //--------------- Функция добавления элемента в Стек ------------------------ Stack* InStack(Stack *p, int in) { Stack *t = new Stack; t -> info = in; t -> next = p; return t; } //----------------- Функция просмотра Стека---------------------------------- void View(Stack *p) { Stack *t = p; while(t! = NULL) { Form1-> Memo1-> Lines-> Add(" " + IntToStr(t-> info)); // В консольном приложении будет, например, cout < < " " < < t-> info < < endl; t = t -> next; } } //----------------------- Функция освобождения памяти ----------------------- void Del_All(Stack **p) { while(*p! = NULL) { t = *p; *p = (*p) -> next; delete t; } }
|