PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آشنایی با کلاس های مجموعه ای | بخش دوم : Queue & Stack



Borna66
08-10-2010, 12:58 AM
هدف این مقاله آشنایی با کلاس های موجود در فضا نام System.Collection و زیر مجموعه هایش که از آنها به کلاس های مجموعه ای یاد می شود، می باشد. در بخش اول این مقاله به کلاس ArrayList پرداختیم. در بخش دوم این مقاله شما با دو کلاس صف و پشته Queue & Stack آشنا می شوید.


کلاس های مجموعه ای چیستند؟
همانطور که می دانید بهترین راه برای جمع آوری عنصرهایی از یک نوع، آرایه ها هستند. DotNetFramework کلاس های مختلفی را فراهم کرده که آن ها نیز عنصر ها را به روش های مخصوصی جمع آوری می کنند. آنها همان کلاس های مجموعه ای هستند و در فضای نام System.Collection و زیر فضاهای آن قرار دارند.
کلاس های مجموعه ای پایه ، عنصرهایشان را به عنوان شیء ، دریافت کرده ، نگه داشته و بر می گردانند. بنابراین نوع عنصر یک کلاس مجموعه ای ،object است.
از آنجا که عناصر از نوع object می باشند، می توان مقادیری از هر نوع را در آن ذخیره نمود.

Queue (صف) :
کلاس Queue یک مکانیسم First-in-First-Out ، (FIFO) را پیاده سازی می کند، به این صورت که در صف یک عنصر به انتها اضافه شده (enqueue) و یکی از ابتدای آن حذف می گردد (dequeue).

مثال:
ساخت و اضافه کردن عناصر به queue:







//Create A Queue List And Fill It
System.Collections.Queue oQueue = new System.Collections.Queue();
for (int i = 5; i < 10; i++)
{
oQueue.Enqueue(i);
}





خواندن عناصر موجود و نمایش در یک ListBox:






//Read Queue List And Show It In ListBox
listBox2.Items.Clear();
foreach (int k in oQueue)
{
listBox2.Items.Add(k.ToString());
}





اضافه کردن یک عنصر به انتهای لیست:






//Adding A Element To Queue List
oQueue.Enqueue(10);





** یادآوری: همانطور که در بخش اول این مقاله اشاره شد، عناصر این مجموعه ها از نوع آبجکت هستند، یعنی مقادیری که شما به این لیست ها اضافه می کنید می توانند از هر نوعی باشند که در اینجا از int استفاده شده است.

حذف یک عنصر از ابتدای لیست:






//Remove The Element
oQueue.Dequeue();





نکته: در QueueList هنگام اضافه کردن ، عنصر به انتهای لیست اضافه می شود ، اما به هنگام حذف ، عنصر از ابتدای لیست حذف می شود.
در این مثال ابتدا لیست به این شکل ساخته می شود: 5,6,7,8,9
بعد از اضافه کردن عنصر 10 لیست به این شکل در خواهد آمد: 5,6,7,8,9,10
و با حذف یک عنصر لیست اینگونه خواهد بود: 6,7,8,9,10
مراحل به همین ترتیب ادامه می یابد.

در StackList سناریو فرق می کند که توضیح داده خواهد شد.

Stack (پشته) :
کلاس Stack یک مکانیسم Last-in-First-Out را پیاده سازی می کند. به این صورت که در یک پشته،عنصر به بالای آن اضافه می شود (عملیات push) و از بالای آن هم حذف می گردد (عملیات pop).

بررسی یک مثال:
ساخت و اضافه کردن عناصر به Stack:






//Create A StackList And Fill It
System.Collections.Stack oStack = new System.Collections.Stack();
for (int i = 5; i < 10; i++)
{
oStack.Push(i);
}






خواندن عناصر موجود و نمایش در یک لیست باکس:






//Read Stack List And Show It In ListBox
listBox3.Items.Clear();
foreach (object j in oStack)
{
listBox3.Items.Add(j.ToString());
}





در موارد پیشین در این مرحله لیست به این حالت بود: 5,6,7,8,9 اما در اینجا (Stack) لیست اینگونه می باشد: 9,8,7,6,5 (اضافه شده به ابتدای لیست)
اضافه کردن یک عنصر به Stack:






//Adding A Element To StackList
oStack.Push("AspNet");






در این حالت لیست به این شکل خواهد بود: AspNet,9,8,7,6,5
حذف یک عنصر از ابتدای لیست:






//Removing An Element
oStack.Pop();





حالا لیست به این شکل است: 9,8,7,6,5