Доброй ночи. Никак не получается сделать из динамического дека - стек. Помогите разобраться где именно и что необходимо изменить, что бы получился дин. стек.
Код | TForm1 *Form1; struct Dek { int data; Dek * next; Dek * prev; }; Dek * l=NULL; Dek * r=NULL; int el_kol=0; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------- void add(int side, int el) { Dek* t; t=new Dek; t->data=el; if (!l||!r) { l=t; l->next=NULL; l->prev=NULL; r=l; return; } if(side==0) { t->next=l; t->prev=NULL; l->prev=t; l=t; } if(side==1) { r->next=t; t->prev=r; t->next=NULL; r=t; } } //----------------------------------------------------------------- void del (int side, TLabel* Label) { Dek* t; if(!l||!r) { ShowMessage("Дек пустой, удаление невозможно."); return; } if(side==0) { t=l; l=l->next; if(l) l->prev=NULL; else r=NULL; Label->Caption="Извлечено: "+IntToStr(t->data); delete t; } if(side==1) { t=r; r=r->prev; if(r) r->next=NULL; else l=NULL; Label->Caption="Извлечено: "+IntToStr(t->data); delete t; } el_kol--; } //----------------------------------------------------------------- void el_print(TMemo* Memo) { Dek* t; t=l; Memo->Clear(); if(t) { while(t) { Memo->Lines->Add(IntToStr(t->data)); t=t->next; } } else Memo->Lines->Add("<Дек пуст>"); } //----------------------------------------------------------------- void __fastcall TForm1::BtAddClick(TObject *Sender) { int el; try { el=StrToInt(MEdAdd->Text); } catch(...) { ShowMessage("Вы ввели недопустимое значение."); }
add(RgAdd->ItemIndex, el); el_kol++; LbAmount->Caption=IntToStr(el_kol); el_print(MemElList); } //---------------------------------------------------------------------------
void __fastcall TForm1::BtDelClick(TObject *Sender) { del(RgDel->ItemIndex, LbDeleted); LbAmount->Caption=IntToStr(el_kol); el_print(MemElList); }
|
|