الصفوف و المكدس المذدوج في ++C

c

الصفوف

يختلف الصف عن المكدس في أن الأخير يعمل بنظام المدخل أخيرا مخرج أولا (Last in-First out ''LIFO'') ولذلك يشبه برصة الأطباق في المطاعم , ما يوضع منها أخيرا هو ما يسحب منها أولا . في حين أن الصف كما تعرفه يسير بمفهوم أن الداخل أولا هو الخارج اولا (First in-First out ''LIFO'') ] إذا افترضنا احترام النظام[

 

والجدول التالي يعطي دوال الفئة TQueueAsVector , وأهمها get التي تخرج العنصر من بداية الصف و put التي تضيف عنصرا في نهايته .

جدول دوال الفئة TQueueAsVector

الدالة

الغرض منها

FirstThat

تعيد مؤشرا لأول كائن يحقق شرطا وضعه المبرمج

Flush

إزالة كافة العناصر

ForEach

تنفيذ عملية علي كافة العناصر

Get

إزالة من مقدمة الصف

GetItemsInContainer

تعيد عدد العناصر

IsEmpty

تعيد 1 في حالة الخلو

IsFull

تعيد 1 في حالة الامتلاء

LastThat

تبحث عن كافة العناصر التي تحقق شرطا ما

Put

إضافة عند المؤخرة

وإليك مثالا تطبيقيا علي هذا النوع من هياكل البيانات :

 

Quaint.cpp

// queint.cpp


// demonstrates TQueueAsVector class


#include <classlib\queues.h>


#include <iostream.h>


 


void main()


   {


   TQueueAsVector<int> quint;


 


   quint.Put(101);


   quint.Put(102);


   quint.Put(103);


 


   while( !quint.IsEmpty() )


      cout << quint.Get() << endl;


   }




المكدس المزدوج



المكدس المزدوج يتيح لك الدخول من أي من النهايتين , والخرج من أيهما أيضا (يمكن تشبيه الوضع بلاعب ورق غشاش) . ودوال الفئة TDequeAsVector التي يتيح التعامل مع هذا النوع من حاويات البيانات مبينة في جدول كما يبين الشكل تصويرا له ويجري العرف علي اعتبار أن النهاية اليسري تعتبر المقدمة واليمني تعتبر المؤخرة .



جدول دوال الفئة TDequeAsVector

























































































الدالة



الغرض منها



FirstThat



تعيد مؤشرا لأول كائن يحقق شرطا ما إزالة كافة العناصر



Flush



تنفيذ عملية علي كافة العناصر



ForEach



تعيد عدد العناصر



GetItemsInContainer



سحب عدد العناصر



GetLeft



سحب عنصر من يسار مؤخرة الصف



GetRight



سحب عنصر من يمين مؤخرة الصف



IsEmpty



تعيد 1 في حالة الخلو



IsFull



تعيد 1 في حالة الامتلاء



LastThat



تبحث عن كافة العناصر التي تحقق شرطا ما



PeekLeft



تعيد العنصر علي يسار المؤخرة دون إزالته



PeekRight



تعيد العنصر علي يمين المؤخرة دون إزالته



PutLeft



إضافة إلي يسار المؤخرة



PutRight



إضافة إلي يمين المؤخرة





وإليك المثال التطبيقي :



 



Dequint.cpp




// dequint.cpp


// demonstrates TDequeAsVector class


 


#include <classlib\deques.h>


#include <iostream.h>


 


void main()


   {


   TDequeAsVector<int> dint;


 


   dint.PutLeft(11);


   dint.PutLeft(12);


   dint.PutLeft(13);


   dint.PutRight(21);


   dint.PutRight(22);


   dint.PutRight(23);


 


   while( !dint.IsEmpty() )


      cout << dint.GetLeft() << endl;


   }




 




التسميات: