Реализация задания в оконном приложении

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

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: