ВУЗ:
Составители:
Рубрика:
ȼ ɤɚɱɟɫɬɜɟ ɩɪɢɦɟɪɚ ɩɪɢɜɟɞɟɦ ɨɩɢɫɚɧɢɟ ɤɥɚɫɫɚ stack, ɩɪɟɞɧɚɡɧɚɱɟɧ-
ɧɨɝɨ ɞɥɹ ɩɨɫɬɪɨɟɧɢɹ ɫɬɟɤɨɜ ɮɢɤɫɢɪɨɜɚɧɧɨɝɨ ɦɚɤɫɢɦɚɥɶɧɨɝɨ ɪɚɡɦɟɪɚ ɫ
ɷɥɟɦɟɧɬɚɦɢ ɩɪɨɢɡɜɨɥɶɧɨɝɨ ɬɢɩɚ.
enum BOOLEAN {FALSE, TRUE};
const int EMPTY=-1;
template <class Type>
class stack
{
private:
Type* s; // ɍɤɚɡɚɬɟɥɶ ɧɚ ɦɚɫɫɢɜ ɫɬɟɤɚ
int max_len; // Ɇɚɤɫɢɦɚɥɶɧɚɹ ɞɥɢɧɚ ɫɬɟɤɚ
int top; // ɂɧɞɟɤɫ ɷɥɟɦɟɧɬɚ ɜ ɜɟɪɲɢɧɟ ɫɬɟɤɚ
public:
stack():max_len(100) /* ɤɨɧɫɬɪɭɤɬɨɪ ɛɟɡ ɩɚɪɚɦɟɬɪɨɜ
{s=new Type[100]; top=EMPTY;}
stack(int size):max_len(size) // ȼɬɨɪɨɣ ɤɨɧɫɬɪɭɤɬɨɪ
{s=new Type[size]; top=EMPTY;}
~stack() {delete [] s;} // Ⱦɟɫɬɪɭɤɬɨɪ
void reset() {top=EMPTY;} // Ɉɱɢɫɬɢɬɶ ɫɬɟɤ
void push(Type c) {s[++top]=c;}
Type pop() {return s[top—];}
Type top_of() {return s[top];}
BOOLEAN empty() {return BOOLEAN(top==EMPTY);}
BOOLEAN full() {return BOOLEAN(top==max_len);}
};
ɋɥɟɞɭɟɬ ɨɬɦɟɬɢɬɶ, ɱɬɨ ɜ ɷɬɨɦ ɩɪɢɦɟɪɟ ɫ ɰɟɥɶɸ ɫɨɤɪɚɳɟɧɢɹ ɢɫɯɨɞɧɨɝɨ
ɬɟɤɫɬɚ ɧɟ ɩɪɟɞɭɫɦɨɬɪɟɧ ɤɨɧɬɪɨɥɶ ɜɵɯɨɞɚ ɡɚ ɩɪɟɞɟɥɵ ɫɬɟɤɚ ɜ ɦɟɬɨɞɚɯ
push
ɢ
pop.
ɑɬɨɛɵ ɫɨɡɞɚɬɶ ɷɤɡɟɦɩɥɹɪ ɩɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɝɨ ɨɛɴɟɤɬɧɨɝɨ ɬɢɩɚ, ɧɭɠɧɨ
ɭɬɨɱɧɢɬɶ ɢɦɹ ɬɢɩɚ ɡɧɚɱɟɧɢɟɦ ɩɚɪɚɦɟɬɪɚ ɜ ɭɝɥɨɜɵɯ ɫɤɨɛɤɚɯ:
stack <int> stack_of_int(50); /* ɋɬɟɤ ɧɚ 50 ɷɥɟɦɟɧɬɨɜ
ɬɢɩɚ int */
stack <myClass> stmc(20); * ɋɬɟɤ ɧɚ 20 ɷɥɟɦɟɧɬɨɜ
ɬɢɩɚ myClass */
ȼ ɩɪɢɜɟɞɟɧɧɨɦ ɩɪɢɦɟɪɟ ɜɫɟ ɤɨɦɩɨɧɟɧɬɵ-ɮɭɧɤɰɢɢ ɨɩɪɟɞɟɥɟɧɵ ɜ ɨɩɢ-
ɫɚɧɢɢ ɤɥɚɫɫɚ. Ʉɨɝɞɚ ɩɨɥɧɨɟ ɨɩɪɟɞɟɥɟɧɢɟ ɮɭɧɤɰɢɢ-ɱɥɟɧɚ ɤɥɚɫɫɚ ɡɚɞɚɟɬɫɹ
ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ, ɨɧɨ ɞɨɥɠɧɨ ɭɬɨɱɧɹɬɶɫɹ ɨɩɢɫɚɬɟɥɟɦ
template. ɇɚ-
ɩɪɢɦɟɪ, ɟɫɥɢ ɛɵ ɦɟɬɨɞ
top_of ɛɵɥ ɨɩɪɟɞɟɥɟɧ ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ, ɨɩɪɟ-
ɞɟɥɟɧɢɟ ɢɦɟɥɨ ɛɵ ɜɢɞ:
template <class Type>
Type top_of() {return s[top];}
Ɉɬɦɟɬɢɦ ɧɟɤɨɬɨɪɵɟ ɫɩɟɰɢɮɢɱɟɫɤɢɟ ɱɟɪɬɵ ɨɩɢɫɚɧɢɣ ɩɚɪɚɦɟɬɪɢɡɨɜɚɧ-
ɧɵɯ ɤɥɚɫɫɨɜ:
x ȿɫɥɢ ɜ ɩɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɦ ɤɥɚɫɫɟ ɨɩɪɟɞɟɥɟɧɵ
friend-ɮɭɧɤɰɢɢ, ɬɨ,
ɤɨɝɞɚ ɬɚɤɚɹ ɮɭɧɤɰɢɹ ɧɟ ɡɚɜɢɫɢɬ ɨɬ ɩɚɪɚɦɟɬɪɚ, ɛɭɞɟɬ ɢɫɩɨɥɶɡɨɜɚɬɶɫɹ
ɟɞɢɧɫɬɜɟɧɧɚɹ
friend-ɮɭɧɤɰɢɹ ɞɥɹ ɜɫɟɯ ɡɧɚɱɟɧɢɣ ɩɚɪɚɦɟɬɪɚ, ɚ ɤɨɝɞɚ
58
ȼ ɤɚɱɟɫɬɜɟ ɩɪɢɦɟɪɚ ɩɪɢɜɟɞɟɦ ɨɩɢɫɚɧɢɟ ɤɥɚɫɫɚ stack, ɩɪɟɞɧɚɡɧɚɱɟɧ- ɧɨɝɨ ɞɥɹ ɩɨɫɬɪɨɟɧɢɹ ɫɬɟɤɨɜ ɮɢɤɫɢɪɨɜɚɧɧɨɝɨ ɦɚɤɫɢɦɚɥɶɧɨɝɨ ɪɚɡɦɟɪɚ ɫ ɷɥɟɦɟɧɬɚɦɢ ɩɪɨɢɡɜɨɥɶɧɨɝɨ ɬɢɩɚ. enum BOOLEAN {FALSE, TRUE}; const int EMPTY=-1; templateclass stack { private: Type* s; // ɍɤɚɡɚɬɟɥɶ ɧɚ ɦɚɫɫɢɜ ɫɬɟɤɚ int max_len; // Ɇɚɤɫɢɦɚɥɶɧɚɹ ɞɥɢɧɚ ɫɬɟɤɚ int top; // ɂɧɞɟɤɫ ɷɥɟɦɟɧɬɚ ɜ ɜɟɪɲɢɧɟ ɫɬɟɤɚ public: stack():max_len(100) /* ɤɨɧɫɬɪɭɤɬɨɪ ɛɟɡ ɩɚɪɚɦɟɬɪɨɜ {s=new Type[100]; top=EMPTY;} stack(int size):max_len(size) // ȼɬɨɪɨɣ ɤɨɧɫɬɪɭɤɬɨɪ {s=new Type[size]; top=EMPTY;} ~stack() {delete [] s;} // Ⱦɟɫɬɪɭɤɬɨɪ void reset() {top=EMPTY;} // Ɉɱɢɫɬɢɬɶ ɫɬɟɤ void push(Type c) {s[++top]=c;} Type pop() {return s[top—];} Type top_of() {return s[top];} BOOLEAN empty() {return BOOLEAN(top==EMPTY);} BOOLEAN full() {return BOOLEAN(top==max_len);} }; ɋɥɟɞɭɟɬ ɨɬɦɟɬɢɬɶ, ɱɬɨ ɜ ɷɬɨɦ ɩɪɢɦɟɪɟ ɫ ɰɟɥɶɸ ɫɨɤɪɚɳɟɧɢɹ ɢɫɯɨɞɧɨɝɨ ɬɟɤɫɬɚ ɧɟ ɩɪɟɞɭɫɦɨɬɪɟɧ ɤɨɧɬɪɨɥɶ ɜɵɯɨɞɚ ɡɚ ɩɪɟɞɟɥɵ ɫɬɟɤɚ ɜ ɦɟɬɨɞɚɯ push ɢ pop. ɑɬɨɛɵ ɫɨɡɞɚɬɶ ɷɤɡɟɦɩɥɹɪ ɩɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɝɨ ɨɛɴɟɤɬɧɨɝɨ ɬɢɩɚ, ɧɭɠɧɨ ɭɬɨɱɧɢɬɶ ɢɦɹ ɬɢɩɚ ɡɧɚɱɟɧɢɟɦ ɩɚɪɚɦɟɬɪɚ ɜ ɭɝɥɨɜɵɯ ɫɤɨɛɤɚɯ: stack stack_of_int(50); /* ɋɬɟɤ ɧɚ 50 ɷɥɟɦɟɧɬɨɜ ɬɢɩɚ int */ stack stmc(20); * ɋɬɟɤ ɧɚ 20 ɷɥɟɦɟɧɬɨɜ ɬɢɩɚ myClass */ ȼ ɩɪɢɜɟɞɟɧɧɨɦ ɩɪɢɦɟɪɟ ɜɫɟ ɤɨɦɩɨɧɟɧɬɵ-ɮɭɧɤɰɢɢ ɨɩɪɟɞɟɥɟɧɵ ɜ ɨɩɢ- ɫɚɧɢɢ ɤɥɚɫɫɚ. Ʉɨɝɞɚ ɩɨɥɧɨɟ ɨɩɪɟɞɟɥɟɧɢɟ ɮɭɧɤɰɢɢ-ɱɥɟɧɚ ɤɥɚɫɫɚ ɡɚɞɚɟɬɫɹ ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ, ɨɧɨ ɞɨɥɠɧɨ ɭɬɨɱɧɹɬɶɫɹ ɨɩɢɫɚɬɟɥɟɦ template. ɇɚ- ɩɪɢɦɟɪ, ɟɫɥɢ ɛɵ ɦɟɬɨɞ top_of ɛɵɥ ɨɩɪɟɞɟɥɟɧ ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ, ɨɩɪɟ- ɞɟɥɟɧɢɟ ɢɦɟɥɨ ɛɵ ɜɢɞ: template Type top_of() {return s[top];} Ɉɬɦɟɬɢɦ ɧɟɤɨɬɨɪɵɟ ɫɩɟɰɢɮɢɱɟɫɤɢɟ ɱɟɪɬɵ ɨɩɢɫɚɧɢɣ ɩɚɪɚɦɟɬɪɢɡɨɜɚɧ- ɧɵɯ ɤɥɚɫɫɨɜ: x ȿɫɥɢ ɜ ɩɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɦ ɤɥɚɫɫɟ ɨɩɪɟɞɟɥɟɧɵ friend-ɮɭɧɤɰɢɢ, ɬɨ, ɤɨɝɞɚ ɬɚɤɚɹ ɮɭɧɤɰɢɹ ɧɟ ɡɚɜɢɫɢɬ ɨɬ ɩɚɪɚɦɟɬɪɚ, ɛɭɞɟɬ ɢɫɩɨɥɶɡɨɜɚɬɶɫɹ ɟɞɢɧɫɬɜɟɧɧɚɹ friend-ɮɭɧɤɰɢɹ ɞɥɹ ɜɫɟɯ ɡɧɚɱɟɧɢɣ ɩɚɪɚɦɟɬɪɚ, ɚ ɤɨɝɞɚ 58
Страницы
- « первая
- ‹ предыдущая
- …
- 56
- 57
- 58
- 59
- 60
- …
- следующая ›
- последняя »