ASP.NET2005
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

نكاتي درباره ساختمان داده

اذهب الى الأسفل

نكاتي درباره ساختمان داده Empty نكاتي درباره ساختمان داده

پست  BARAN الأربعاء ديسمبر 09, 2009 2:18 pm

ساختمان داده چيست؟
عبارت است از ساختارهای دادهای که درحافظهء اصلی کامپیوتر در نظرمی گیریم تا بتوانیم الگوریتمهای برنامه نویسی را بر روی آنها به شکل مناسب پیاده سازی نماییم.

آرایه:
مجموعه ای از داده ها هستند که نوعشان یکسان است به عنوان مثال:اگر 10 عدد صحیح را بخواهیم در حافظه اصلی قرار دهیم بجای انکه 10 متغیر (int) تعریف بکنیم یک آرایه (int) تعریف می کنیم که 10 خانه داشته باشد .

آرایه های 2 بعدی را ماتریس نیز می گویند .

در آرایه های 2 بعد به بالا برای اینکه بتوانیم عناصر را به صورت صحیح از خانه هایی که ذخیره شده اند بازیابی نماییم بایستی مشخص گردد که اگر ذخیره عناصر به شکل سطری است بازیابی آنها نیز به شکل سطری باشد و اگر ستونی است بازیابی انها به صورت ستونی باشد.


روش سطری پیمایش و ذخیره آرایه ها :

b11 , b12 , b13 , b14 , b21 , b22 , b23 , b24 , b31 , b32 , b33 , b34

در پیمایش سطری آرایه ها اندیسهای خانه های آرایه از سمت راست تغییر می کنند بطوریکه اندیس سمت چپ به صورت ثابت باقی می ماند و یک واحد یک واحد به اندیس سمت راست اضافه می شود تا زمانیکه به ماکسیمم مقدار خود برسد که در این لحظه یک واحد به اندیس سمت چپ اضافه می شود و دوباره اندیس سمت راست شروع به افزایش می یابد واین کار تا زمانی ادامه پیدا می کند که هر 2 اندیس به ماکسیمم مقدار خود برسد.


روش ستونی پیمایش ذخیره ها :

در روش ستونی اندیسهای آرایه از سمت چپ شروع به افزایش می کنند یعنی اندیسهای سمت چپ یک واحد یک واحد اضافه می شوند تا زمانی که به ماکسیمم مقدار خود برسند که در این لحظه یک واحد اندیس سمت راست اضافه می شود و دوباره اندیس سمت چپ از 1 شروع به افزایش می کند و این کار تا زمانی انجام می گیرد که تمامی اندیسها به ماکسیمم مقدار خود برسند .

ماتریس اسپارس (خلوت - پراکنده) :
ماتریسی است که اکثریت عناصر ان مقدار ثابت و غیر قابل محاسبه ( معمولا صفر) می باشد و تنها تعداد کمی از خانه های ان داده ها به درد بخور می باشند بنابراین فضای بسیار زیادی از حافظه اصلی را برای ذخیره کردن این تعداد کم داده ها تلف می کنیم


الگوريتمهاي مربوط به پيمايش هاي سطري و ستوني

[A [n][m

پیمایش سطری:
کد:
for i: =1 to n do
for j: =1 to m do
write (a [i,j] ) ;
پیمایش ستونی :
کد:
for j: =1 to m do
for i: =1 to n do
write (a[i,j] ) ;


پشته چیست؟
پشته به لیست مرتبی گفته می شود که عملیات درج و حذف ازآن از یک طرف صورت بگیرد. عملکرد آن به صورت LIFO هست. Last In First Out.( یعنی آخرین عنصر وردی، اولین عنصر خروجی است. مثل قرار دادن یک سری بشقاب روی هم دیگر که آخرین بشقاب قرار داده شده، اولین بشقابی هست که می شودآنرا برداشت.)
اما مهمترین کاربرد پشته ذخیره آدرس های بازگشت در برنامه نویسی و ساخت متغیرهای محلی در صدا زدن توابع است. یکی دیگر از کاربرد های مهم پشته اجرای عملیات undo و redo است .

نمایش پشته
ساده ترین روش برای نمایش پشته استفاده از یک آرایه 1 بعدی به طول n می باشد. در کنار آرایه متغیری به نام top وجود دارد که به عنصر بالایی اشاره دارد. top در ابتدای کار صفر است و از 0 تا n تغییر می کند.
شرط خالی بودن پشته عبارت است از : if top=0
شرط پر بودن پشته عبارت است از : if top= n
زیر برنامه های حذف از پشته (pop) و اضافه کردن به پشته یا نوشتن در آن (push) در زبان C به صورت زیر است:
کد:
void push (item k)
{
if (top ==n-1)
stackfull ();
else
;stack[++top]=k
}
کد:
items pop()
}
if (top==-1)
stackempty();
else return stack [top--];
{



پشته چندگانه:
اگر فقط نیاز به دو پشته در برنامه داشته باشیم راه حل ساده است. برای این منظور از یک آرایه n خانه ای استفاده می کنیم.[ s[1 ابتدای پشته اول و [s[nابتدای پشته دوم را نشان می دهد و پشته ها به سمت همدیگر می توانند رشد کنند. بدین ترتیب از حافظه موجود به صورت بهینه استفاده می شود.
ولی اگر بخواهیم بیش از دو پشته داشته باشیم، روش فوق قابل استفاده نیست. در این حال برای نمایش n پشته حافظه[ s[1..n را به n قسمت تقسیم می کنیم. تقسیم بندی آرایه ها متناسب با نیازها باشد. در این حالت مقادیر به صورت زیر خواهد بود:
کد:
b[i]=t[i]=[m/n](i-1)+1
که در آن n تعداد پشته ها و m حد بالای آرایه است.

در حالت پشته های چندگانه (n>2) ممکن است یکی از پشته ها سریع تر از بقیه پر شود و به همین دلیل استفاده از حافظه بهینه نخواهد بود. برای رفع این مشکل باید عناصر شیفت داده شوند تا در انتهای پشته پر شده فضای خالی تولید شود و این عمل در بدترین حالت
o(m) خواهد بود. در پشته های چند گانه (n=2) استفاده از حافظه بهینه است و زمان پردازش نیز از مرتبه o(1) است.

BARAN
کاربر متوسط
کاربر متوسط

تعداد پستها : 35
تاريخ التسجيل : 2009-11-03

بازگشت به بالاي صفحه اذهب الى الأسفل

بازگشت به بالاي صفحه

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
شما نمي توانيد در اين بخش به موضوعها پاسخ دهيد