Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 01:00   #1
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
Вопрос из дин. дека в дин. стек (Borland С++)

Доброй ночи. Никак не получается сделать из динамического дека - стек. Помогите разобраться где именно и что необходимо изменить, что бы получился дин. стек.

Код:
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);
}
mego4el вне форума Ответить с цитированием
Старый 07.07.2011, 14:41   #2
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
По умолчанию

хелп плз
mego4el вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Трехмерный дин. массив revanatar Общие вопросы C/C++ 3 29.11.2010 22:02
Дин.массивы на С++ w0lf16 Помощь студентам 0 27.11.2010 15:37
Дин.массивы на C++ Уася Помощь студентам 3 15.11.2010 13:22
Дин. создание Shape Sanakan Помощь студентам 1 13.02.2010 00:10