PDA

View Full Version : پیاده‌سازی پشته در C#



DumanNazeri
دوشنبه 26 آبان 1393, 18:55 عصر
سلام. وقت بخیر. خسته نباشید.
من یک برنامه ای در C++ نوشته بودم که از یک پشته استفاده میکرد برای بررسی تطابق پرانتزها..
حالا در تبدیل این برنامه به C# مشکل دارم.
همین‌طور که حتما بزرگواران در جریان هستید در C++ دو دستور زیر وجود داشتند که من متاسفانه بلد نیستم معادلشون در C# برای کار با پشته ها چیه..

S.empty();

برای برسی خالی بودنِ پشته..
و

S.Top();

برای نمایش آخرین داده درون Stack..

ممنون می‌شم اگر راهنماییم کنید..

rasoolf
دوشنبه 26 آبان 1393, 20:48 عصر
سلام. وقت بخیر. خسته نباشید.
من یک برنامه ای در C++‎‎‎‎ نوشته بودم که از یک پشته استفاده میکرد برای بررسی تطابق پرانتزها..
حالا در تبدیل این برنامه به C#‎‎‎‎ مشکل دارم.
همین‌طور که حتما بزرگواران در جریان هستید در C++‎‎‎‎ دو دستور زیر وجود داشتند که من متاسفانه بلد نیستم معادلشون در C#‎‎‎‎ برای کار با پشته ها چیه..

S.empty();

برای برسی خالی بودنِ پشته..
و

S.Top();

برای نمایش آخرین داده درون Stack..

ممنون می‌شم اگر راهنماییم کنید..


پشته یک نوع داده ای است که خودت باید تعریف کنی (البته الان در فضای نام system.collections یک پشته (stack) وجود داره و میشه ازش استفاده کرد)

یه نمونه کد برای ایجاد پشته در #C با ذکر منبع (http://stackoverflow.com/questions/4200679/create-stack-class-without-system-collections)




using System;
using System.Linq;
using System.Text;
using DataStructures;




namespace DataStructures
{
class Stack
{
Object[] stack;
Int32 i;
Int32 j;


public Stack(int n)
{
stack = new Object[n];
i = 0;
j = n;
}


public void Push(object item)
{
if (!isStackFull())
{
stack[i++] = item;
}
else
Console.WriteLine("Stack is Full");
}


public bool isStackFull()
{
if (i == j)
return true;
else
return false;
}


public object Pop()
{
if (stack.Length != 0)
return stack[--i];
return -1;
Console.WriteLine("Stack is empty");
}


public object TopElement()
{
if (stack.Length != 0)
return stack[i - 1];
return 0;
}
}


}


class Program
{
static void Main(string[] args)
{
Stack s = new Stack(5);
s.Push(5);
s.Push(6);
s.Push("string");
s.Push(8);
s.Push("ram");
s.Push(8);
s.Push(8);


Console.WriteLine("Peek: {0}", s.TopElement());
Console.WriteLine("Pop: {0}", s.Pop());
Console.WriteLine("Peek: {0}", s.TopElement());
Console.WriteLine("pop: {0}", s.Pop());
Console.Read();
}
}

ghossein
سه شنبه 27 آبان 1393, 01:02 صبح
سلام
لینک زیر رو ببینید ، استفاده از پشته در سی شارپ هست :

http://barnamenevis.org/showthread.php?334949-%D9%BE%D8%B4%D8%AA%D9%87-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE

NASA's Spaceman
سه شنبه 27 آبان 1393, 07:19 صبح
میشه یکی یه توضیح مختصر بده که پشته چی هست و کارش تو سی شارپ چی هست؟
با سپاس Spaceman

ghossein
سه شنبه 27 آبان 1393, 09:02 صبح
سلام

پشته یه نوع ساختمان داده ی است که ، داده ها فقط می توانند به بالای آن افزوده شده ، و از بالای آن خوانده یا حذف گردد . به همین دلیل به پشته ، ساختمان داده ی ، آخرین ورودی - اولین خروجی (LIFO) گفته می شود. (تعریف جامع)

با توجه به تعریف پشته ، برنامه نویس هر جا که تشخیص بده مسئله با پشته حل میشه از اون استفاده می کنه مثل : تبدیل عبارات و ارزیابی اونها - معکوس کردن محتویات یک آرایه و ...