13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

53<br />

} // 0 1 Иванов 2 Петров 3 Сидоров<br />

while (s–>AtLeast (1))<br />

b += AnsiString (s–>Count ()) + ' ' + (char*) s–>Pop () + '\n';<br />

ShowMessage (b + '0'); // 3 Сидоров 2 Петров 1 Иванов 0<br />

}<br />

void SimpleStack() {<br />

TStack *vStack = new TStack;<br />

vStack–>Push ("Пеpвое ");<br />

vStack–>Push ("Втоpое "); vStack–>Push ("Тpетье ");<br />

ShowMessage ("Добавили " + AnsiString (vStack–>Count ()));<br />

vStack–>Pop (); ShowMessage ("Осталось " + AnsiString (vStack–>Count ()));<br />

}<br />

Далее приведен пример разработки авторского символьного стека без<br />

привлечения библиотечного класса TSteak:<br />

const int ARRAYSIZE = 1000;<br />

struct vStack { char s[ARRAYSIZE]; int top; };<br />

void Reset (vStack *stk) { stk–>top = –1; }<br />

int Empty (const vStack *stk) { return stk–>top == –1; }<br />

int Full (const vStack *stk) { return stk–>top == ARRAYSIZE – 1; }<br />

void Push (char *str, vStack *stk) {<br />

int i = 0; while (str[i]) if (!Full (stk)) stk–>s[++stk–>top] = str[i++];<br />

}<br />

void Pop (vStack *stk) {<br />

AnsiString result;<br />

while (!Empty (stk)) result += AnsiString (stk–>s[stk–>top––]) + '\n';<br />

ShowMessage (result);<br />

}<br />

void MyStack () {<br />

vStack s;<br />

Reset (&s);<br />

Push ("Пеpвое ", &s); Push ("Втоpое ", &s); Push ("Тpетье ", &s); Pop (&s);<br />

}<br />

Очередью (queue) <strong>на</strong>зывают последовательность данных, в которой помещение<br />

данных выполняется с одного конца – входа очереди (input), а выборка<br />

– с другого конца – выхода очереди (output) по принципу «первым вошел<br />

– первым вышел» (FIFO – First Input, First Output):<br />

void _ _fastcall TForm1::QueueClick (TObject *Sender) {<br />

AnsiString a[] = { "Иванов", "Петров", "Сидоров" }, b = "0\n";

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!