المصفوفات كعناصر فئات في ++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 مع كل بيان بنقص من المكدس ( لا يمحي البيان الذي أزيل من المكدس , بل يظل مكانه غير مستخدم ) , ] حيث يكتب عليه في المرة التالية لشغل المكان [ . ويبين الشكل تصويرا لمكدس , تلاحظ فيه أن قمة المكدس رسمت إلي أسفل , حيث إن الذاكرة مصورة وكأن قاعدتها أعلي الصفحة طبقا للعرف في رسم الذاكرة .



Object-Oriented Programming in C   _Page_0308_Image_0001



























شكل مكدس



ويقوم البرنامج بإنشاء مكدس كائن من فئة "مكدس" stack , وهو الكائن s1 ويقوم بإدخال بيانين فيه , ثم يسحبهما ويظهرهما علي الشاشة , ثم يضع أربعة بيانات , ثم يسحبها ويظهرها .



وكما تري فإن البيان الذي يدخل في المكدس أخيرا هو البيان الذي يقرأ أولا .



ونريد أن نجذب انتباهك إلي الفرق في استخدام مؤثري التزايد والتناقص في العبارتين :



St[++top] = var;



Retun st[top--];



ففي الأولي يكون التزايد في دليل قمة المكدس سابقا لإدخال البيان الجديد , وفي الثانية يكون إزالة البيان المراد , ثم إنقاص دليل قمة المكدس .



والمكادس هي إحدي صور عديدة لتجمعات البيانات , كالصفوف والقوائم المترابطة وغيرها , وهو ما سنتناوله في مقالات قادمة بإستفاضة .

تعليقات

المشاركات الشائعة من هذه المدونة

المؤثرات الحسابية في C++

دوال النمط الرسومي في ++C

المؤثرات المنطقية في C++