المصفوفات كعناصر فئات في ++C
المصفوفات كعناصر فئات
يمكن أن تكون المصفوفات أحد عناصر البيانات في الفئات المعرفة للكائنات . وسوف نعطي مثالا لهيكل بيانات شائع في مجال تصميم الحواسب , وهو هيكل " المكدس stack "ii.
stakaray.cpp
// stakaray.cpp
// a stack as a class
#include <iostream.h>
#include <conio.h>
const int MAX = 100;
class Stack
{
private:
int st[MAX]; // stack: array of integers
int top; // number of top of stack
public:
Stack() // constructor
{ top = 0; }
void push(int var) // put number on stack
{ st[++top] = var; }
int pop() // take number off stack
{ return st[top--]; }
};
void main()
{
Stack s1;
s1.push(11);
s1.push(22);
cout << "1: " << s1.pop() << endl; // 22
cout << "2: " << s1.pop() << endl; // 11
s1.push(33);
s1.push(44);
s1.push(55);
s1.push(66);
cout << "3: " << s1.pop() << endl; // 66
cout << "4: " << s1.pop() << endl; // 55
cout << "5: " << s1.pop() << endl; // 44
cout << "6: " << s1.pop() << endl; // 33
getche();
}
ويتكون المكدس نفسه من المصفوفة st[MAX] , ويمثل المتغير top دليل أخر بيان أضيف للمكدس , وهو يتزايد مع كل بيان يضاف عن طريق الدالة push ويتناقص عن طريق الدالة pup مع كل بيان بنقص من المكدس ( لا يمحي البيان الذي أزيل من المكدس , بل يظل مكانه غير مستخدم ) , ] حيث يكتب عليه في المرة التالية لشغل المكان [ . ويبين الشكل تصويرا لمكدس , تلاحظ فيه أن قمة المكدس رسمت إلي أسفل , حيث إن الذاكرة مصورة وكأن قاعدتها أعلي الصفحة طبقا للعرف في رسم الذاكرة .
شكل مكدس
ويقوم البرنامج بإنشاء مكدس كائن من فئة "مكدس" stack , وهو الكائن s1 ويقوم بإدخال بيانين فيه , ثم يسحبهما ويظهرهما علي الشاشة , ثم يضع أربعة بيانات , ثم يسحبها ويظهرها .
وكما تري فإن البيان الذي يدخل في المكدس أخيرا هو البيان الذي يقرأ أولا .
ونريد أن نجذب انتباهك إلي الفرق في استخدام مؤثري التزايد والتناقص في العبارتين :
St[++top] = var;
Retun st[top--];
ففي الأولي يكون التزايد في دليل قمة المكدس سابقا لإدخال البيان الجديد , وفي الثانية يكون إزالة البيان المراد , ثم إنقاص دليل قمة المكدس .
والمكادس هي إحدي صور عديدة لتجمعات البيانات , كالصفوف والقوائم المترابطة وغيرها , وهو ما سنتناوله في مقالات قادمة بإستفاضة .
تعليقات
إرسال تعليق