В HIDER-файле
| Код | class List {static List* top; int info; List *link; public: List ( int i) { link=top; //подключение списка к существующему info = i; // заполнение информационной части списка top = this; // на вершине очереди - текущий список // вывод сообщения о создании элемента очереди char istr[10],str[40];//временные строки для MessageBox _ltoa( this->info, istr, 10 );//функция, преобразующая //десятичное целое в строку strcpy(str,"Создается элемент списка :");//формирование начала строки strcat(str,istr); MessageBox(0,str,"Создание",MB_OK); };//диалог MessageBox ~List (){ List *p; char istr[10],str[40]; _ltoa( this->info, istr, 10 ); if(top==this)top= link;// элемент удаляется с вершины else { for(p=top;p;p=p->link)if(p->link == this)break; if(p) p-> link = link; else { MessageBox(0,"Элемент не найден !",””, MB_OK); exit(1); } } //вывод сообщения об удалении элемента из очереди strcpy(str,"Удаляется элемент списка :"); strcat(str,istr); MessageBox(0,str,"Удаление",MB_OK); }; static void show();// демонстрация содержимого очереди static List *gettop(){return top;}; };
В CPP-файле
#include<stdlib.h> #include<string.h> #pragma hdrstop #include "stat.h" #pragma resource "*.dfm" TForm1 *TForm1; List* List::top=0;//top должен быть объявлен как глобальный int element; //переменная, используемая для заполнения списков __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){} void List::show() { List *p; char istr[10],str[40];// просмотр списков if(!top)MessageBox(0,"Список пуст","Нет элементов",MB_OK); for(p=top;p;p=p->link) { _ltoa( p->info, istr, 10 ); strcpy(str,"Элемент списка :"); strcat(str,istr); MessageBox(0,str,"Просмотр",MB_OK); } } void __fastcall TForm1::Button1Click(TObject *Sender) { Visible=false;// скрываем форму на время MessageBox new List(++element);// добавляем в очередь элемент Visible=true;// восстанавливаем статус формы } void __fastcall TForm1::Button2Click(TObject *Sender) { List *p; // вспомогательный указатель Visible=false; p = List::gettop(); if( p ) delete p; //удаление элемента с вершины очереди Visible=true;} void __fastcall TForm1::Button3Click(TObject *Sender) { Visible=false; List::show(); Visible=true;} void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { //освобождение памяти при закрытии формы List* p;// вспомогательный указатель Visible=false; while( p=List::gettop())delete p;//цикл по удалению остав- } шихся списков из очереди
|
ЗАДАНИЕ: Добавьте в систему функцию увеличения значений элементов очереди на заданную величину
! Rodman | Модератор: Используйте подсветку кода! |
|