•✿♥lostlove♥✿•
New member
مقدمه :
ساختارهاي داده اي از نظر تعداد
اعضا به دو دسته استاتيک و ديناميک تقسيم مي شوند . ساختارهاي استاتيک مثل
آرايه هاي يک بعدي و آرايه هاي دو بعدي ، تعداد اعضاي آنها در زمان طراحي
برنامه مشخص مي شود و در طول اجراي برنامه ثابت است اما تعداد اعضاي
ساختارهاي داده اي ديناميک در طول اجراي برنامه تغيير مي کند . ليست پيوندي
( LinkList ) ، پشته ( Stack ) ، صف ( Queue ) و درختهاي باينري ( Tree
Binary) ، نمونه هايي از ساختارهاي داده اي ديناميک هستند .
ليست پيوندي شامل مجموعه اي از عناصر داده اي است که اضافه و حذف اعضا در
هر جاي ليست ممکن است .
پشته يک ساختار داده اي مهم در کامپايلرها و سيستم هاي عامل است که عمل
اضافه و حذف عناصر از ابتداي آن انجام مي شود .
ص�? يک ساختار داده اي است که عمل اضافه کردن از انتها و عمل حذف کردن از
ابتداي آن انجام مي شود .
درختهاي دودويي براي جستجوي بسيار سريع ، ذخيره سازي داده ها و کامپايل
عبارات استفاده مي شوند .
نوع داده Variant :
نوع داده variant براي متغيرهايي بکار مي رود که بطور صريح نوع آنها تعريف
نشده است مثال :
Dim value As Variant
اين نوع داده مي تواند هر نوع داده اي را در خود ذخيره کند . همچنين براي
ايجاد ساختارهاي داده اي مثل ليست هاي پيوندي ، صف ، پشته و درخت مناسب است
.
نوع داده موجود در variant مي توان توسط توابع VarType و TypeName تعيين
کرد . تابع VarType يک مقدار صحيح برمي گرداند که نشان دهنده نوع ذخيره شده
در variant است .
مثال :
Dim value as Variant
value=�?Hello�?x
در اينصورت مقدار بازگشتي ( VarType( value برابر 4 خواهد بود .
تابع TypeName يک رشته برمي گرداند که نشان دهنده نام نوع داده ذخيره شده
در variant است .
اخذ حافظه بطور ديناميک Dynamic Memory
Allocation :
براي ايجاد و نگهداري ساختارهاي داده اي ديناميک بايستي در هنگام اجراي
برنامه بتوان فضاي بيشتري براي نگهداري داده هاي جديد بدست آورد . با
استفاده از کلمه کليدي New مي توان در ويژوال بيسيک حاقظه ديناميک گرفت :
Set NewNode=New ListNode
که ListNode يک شي از ساختار داده اي مورد نظر ماست .
کلاسهاي
خود ارجاعي :
کلاس خودارجاعي نوعي کلاس است که داراي يک اشاره گر ( Pointer ) به يک شي
از همان نوع کلاس باشد . براي مثال اگر کلاس ما به اسم ClistNode باشد و
متغير زير را در آن تعريف کنيم ، اين کلاس يک کلاس خود ارجاعي است :
Private mNextNode as ClistNode
از mNextNode براي لينک دادن اعضاي يک ساختار داده اي ديناميک بهم استفاده
مي شود ( بعبارت ديگر گره زدن يک شي از کلاس ClistNode به يک شي ديگر از
همان کلاس ) . شي هاي خودارجاعي مي توانند به همديگر لينک شوند و ساختارهاي
داده اي مثل ليست پيوندي ، صف ، پشته و درخت را ايجاد کنند .
شکل زير دو شي خود ارجاعي را نشان مي دهد که بصورت يک ليست بهم لينک شده
اند . عبارت NULL بدين معنا است که شي خودارجاعي به شي ديگري اشاره نمي کند
( Nothing ) و نشان دهنده انتهاي ساختار داده است .
ساختارهاي داده اي از نظر تعداد
اعضا به دو دسته استاتيک و ديناميک تقسيم مي شوند . ساختارهاي استاتيک مثل
آرايه هاي يک بعدي و آرايه هاي دو بعدي ، تعداد اعضاي آنها در زمان طراحي
برنامه مشخص مي شود و در طول اجراي برنامه ثابت است اما تعداد اعضاي
ساختارهاي داده اي ديناميک در طول اجراي برنامه تغيير مي کند . ليست پيوندي
( LinkList ) ، پشته ( Stack ) ، صف ( Queue ) و درختهاي باينري ( Tree
Binary) ، نمونه هايي از ساختارهاي داده اي ديناميک هستند .
ليست پيوندي شامل مجموعه اي از عناصر داده اي است که اضافه و حذف اعضا در
هر جاي ليست ممکن است .
پشته يک ساختار داده اي مهم در کامپايلرها و سيستم هاي عامل است که عمل
اضافه و حذف عناصر از ابتداي آن انجام مي شود .
ص�? يک ساختار داده اي است که عمل اضافه کردن از انتها و عمل حذف کردن از
ابتداي آن انجام مي شود .
درختهاي دودويي براي جستجوي بسيار سريع ، ذخيره سازي داده ها و کامپايل
عبارات استفاده مي شوند .
نوع داده Variant :
نوع داده variant براي متغيرهايي بکار مي رود که بطور صريح نوع آنها تعريف
نشده است مثال :
Dim value As Variant
اين نوع داده مي تواند هر نوع داده اي را در خود ذخيره کند . همچنين براي
ايجاد ساختارهاي داده اي مثل ليست هاي پيوندي ، صف ، پشته و درخت مناسب است
.
نوع داده موجود در variant مي توان توسط توابع VarType و TypeName تعيين
کرد . تابع VarType يک مقدار صحيح برمي گرداند که نشان دهنده نوع ذخيره شده
در variant است .
مثال :
Dim value as Variant
value=�?Hello�?x
در اينصورت مقدار بازگشتي ( VarType( value برابر 4 خواهد بود .
تابع TypeName يک رشته برمي گرداند که نشان دهنده نام نوع داده ذخيره شده
در variant است .
اخذ حافظه بطور ديناميک Dynamic Memory
Allocation :
براي ايجاد و نگهداري ساختارهاي داده اي ديناميک بايستي در هنگام اجراي
برنامه بتوان فضاي بيشتري براي نگهداري داده هاي جديد بدست آورد . با
استفاده از کلمه کليدي New مي توان در ويژوال بيسيک حاقظه ديناميک گرفت :
Set NewNode=New ListNode
که ListNode يک شي از ساختار داده اي مورد نظر ماست .
کلاسهاي
خود ارجاعي :
کلاس خودارجاعي نوعي کلاس است که داراي يک اشاره گر ( Pointer ) به يک شي
از همان نوع کلاس باشد . براي مثال اگر کلاس ما به اسم ClistNode باشد و
متغير زير را در آن تعريف کنيم ، اين کلاس يک کلاس خود ارجاعي است :
Private mNextNode as ClistNode
از mNextNode براي لينک دادن اعضاي يک ساختار داده اي ديناميک بهم استفاده
مي شود ( بعبارت ديگر گره زدن يک شي از کلاس ClistNode به يک شي ديگر از
همان کلاس ) . شي هاي خودارجاعي مي توانند به همديگر لينک شوند و ساختارهاي
داده اي مثل ليست پيوندي ، صف ، پشته و درخت را ايجاد کنند .
شکل زير دو شي خود ارجاعي را نشان مي دهد که بصورت يک ليست بهم لينک شده
اند . عبارت NULL بدين معنا است که شي خودارجاعي به شي ديگري اشاره نمي کند
( Nothing ) و نشان دهنده انتهاي ساختار داده است .