X
xparen
Помогите найти ошибку в коде... Программа написана в оконном режиме.. при нажатии клавиши Просмотр... программа зацикливаеться и выводит без конца одно и то же число... Ниже код программы... Также прикрепляю всю программу целиком.
C++:
//---------------------------------------------------------------------------
struct Stack {
int info;
Stack * next;
} *begin, *t;
//---------------------------------------------------------------------------
Stack* InStack(Stack*, int);
void View(Stack*);
void Del_All(Stack **);
//--------------------------------- Создать ---------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
//------проверка перед созданием----
{
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));
}
//---------------------------- Добавить -------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i, in, n = StrToInt(Edit2->Text);
for(i = 1; i <= n; i++){
in = random(20);
begin = InStack(begin, in);
}
Memo1->Lines->Add("Добавлено элементов " + IntToStr(n));
}
//-------------------------------- Очистить ---------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if (begin != NULL) Del_All(&begin);
ShowMessage("Память освобождена!");
}
//------------------------------------ Выход --------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
if(begin != NULL) Del_All(&begin);
Close();
}
//------------------------------- Просмотр ----------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
if(!begin){
ShowMessage("Стек Пуст!");
return;
}
Memo1->Lines->Add("--- Элементы ---");
View(begin);
}
//----------------------------- Ф-ия добавки --------------------------------
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));
}
}
//---------------------------- ф-ия освобождения памяти ---------------------
void Del_All(Stack **p) {
while(*p != NULL) {
t = *p;
*p = (*p) -> next;
delete t;
}
}