හොඳයි අපි බලමු මොනවද මේ Data Structures කියන්නේ කියල. පරිගණක විද්‍යාව කියන එක විශාල ගොඩනැගිල්ලක් නම් ඒකෙ සැකිල්ල Data Structures කියල කිව්වොත් නිවැරදියි කියල මන් හිතනව. මොකද ඉතා දියුණු තත්වයේ තියන පරිගණක වැඩසටහනක උනත් අපි ඇතුලට ගිහින් බැලුවොත් (ඒකෙ මුලික තැනුම් ඒකක වලට ගිහින් බැලුවොත්) අපිට බොහොමයක් Data Structures බලා ගන්න පුළුවන්. ඉතින් ඒ තරම් වැදගත් වෙන Data Structures ගැන කතා කරන පලවෙනි කොටස තමයි මේ විදිහට පටන් ගන්නේ.
ඉතින් පැහැදිලි වෙන්න ඇති Data Structures පිලිබඳ හොඳ දැනුමක් අවබෝධයක් තියන එක හොඳ පරිගණක වැඩසටහනක් නිර්මාණය කරන්න ගොඩක් වැදගත් වෙනව කියන එක. හරියට හොඳ සකිල්ලකින් අනතුරුව බාහිරට ලස්සනට දකින්න ලැබෙන හොඳ නිර්මාණයක් වගේ.

හොඳයි, data එහෙම නැත්නම් දත්ත සමග අපි නිතරම ගණුදෙනු කරනව. ඒ දත්ත සමූහ විදිහට කාණ්ඩ වලට වෙන් කරල තියා ගන්න විදිහ අපිට ගොඩක් වැදගත් වෙනව. මොකද එතකොට තමයි අපිට පුළුවන් වෙන්නේ අවශ්‍ය වෙලාවට ඉක්මනින් අපිට අවශ්‍ය දත්ත ලබා ගන්න.

හොඳයි උදාහරණයක් විදිහට හිතන්න Dictionary එකක තියන දත්ත, ඒ කියන්නේ වචන. ඉතින් මේ විශාල දත්ත සමුහයෙන් අපිට අවශ්‍ය වචනයක් හොයා ගන්නෙ කොහමද ? පහසුයි නේද ? මොකද ඒ පහසු ? Dictionary එකේ වචන අකාරාදී පිළිවෙලට තමයි පෙලගස්වල තියෙන්නෙ. ඉතින් මේ පෙලගස්වල තියන අකාරය නිසා තමයි අපිට ඉතා පහසුවෙන් මේ වචන හොයා ගන්න පුළුවන් වෙලා තියෙන්නෙ.

හොඳයි මේ විදිහට Data Structures ගැන කතා කරද්දී අපිට ප්‍රධාන ආකාර දෙකකට බෙදල වෙන් කරගන්න පුළුවන්.

Mathematical or Logical Model / Abstract Data type
මේකෙන් අදහස් කරන්නේ යම් දෙයක බාහිරින් දකින ස්වරුපය ගැනයි. ඒ කියන්නේ අපි Data Structures එකේ බාහිරින් විතරයි දකින්නේ. ඒකෙන් මොනවද කරන්න පුළුවන්, මොනවද අපිට තියන Features වගේ බාහිර දේවල් ගැන විතරයි අපි හිතන්නේ. උදාහරණයක් විදිහට මෙහෙම හිතන්න. ජංගම දුරකථනය ගැන හිතන්න. අපිට calls ගන්න පුළුවන් calls එනවා. sms යවන්න පුළුවන් sms ලබා ගන්න පුළුවන් වගේ දේවල්. ඉතින් ජංගම දුරකතනයේ අභ්‍යන්තර ක්‍රියාකාරිත්වය ගැන හිතන්නේ නැතුව බාහිරින් පේන දේ ගැන විතරයි මන් හිතුවේ. ඉතින් මේ විදිහට Data Structures එකක් ගැන හිතුවොත් අපි එකට කියනවා Abstract data types කියල.
මේකට උදාහරණයක් විදිහට අපිට ගන්න පුළුවන් List.

  • List එකකදී අපිට පුළුවන් කලින් තීරණය කරපු elements සංඛ්‍යාවකට අදාලව data store කරන්න.
  • List එකේ යම් ස්ථානයක තියන දත්තයක් අපිට read කරන්න පුළුවන්.
  • List එකේ යම් නිශ්චිත ස්ථානයක තියන දත්තයක් අපිට ඕන විදිහට වෙනස් කරන්න පුළුවන්.
  • ඉතින් අපිට programming language එකක් පාවිච්චි කරල මේ විදිහේ data list එකක් හදන්න පුළුවන්.

Implementation
මේකෙන් අදහස් කරන්නේ යම් data structure එක programming language එකක් මාර්ගයෙන් නිර්මාණය කර ගන්න ආකාරය ගැනයි. කලින් අපි හිතුවේ බාහිර ස්වරුපය ගැන විතරයි. දැන් කලින් කතා කරපු List ගැන හිතුවොතින් බොහොමයක් (සියල්ලේම වගේ) High level Programming Languages වල ඉතා පහසුවෙන් මේ විදිහට Data Structure එකක් හදා ගන්න පුළුවන් Arrays පාවිච්චි කරල. මේ Arrays භාවිතා කරලා කලින් model එකේදී කතා කරපු හැම අංගයක්ම අඩංගු වෙන විදිහේ ඒ Data Structure එක අපිට implement කර ගන්න පුළුවන්.
වැදගත් කාරණය තමයි අපිට මේ implement කරන විදිහ එකම programming language එකක උනත් වෙනස් වෙනස් ආකාර වලින් කරන්න පලුවන්. උදාහරණයක් විදිහට ගත්තොත් කලින් කියපු අවශ්‍යතා සම්පුර්ණ වෙන විදිහට C හෝ C++ programming languages භාවිතා කරලා Arrays වලට අමතරව Linked List වලින් උනත් කලින් කියපු අවශ්‍යතා සම්පුර්ණ වෙන විදිහේ implementation එකක් කර ගන්න පුළුවන්.

හොඳයි ඉදිරියේදී මේ හැම Data Structure එකක් ගැනම සවිස්තරාත්මකව කතා කරමු. Data Structures වල logical model වගේම Programming language එකක් භාවිතා කරලා implement කර ගන්න ආකාරයත් ගැනත් කතා කරන්න බලාපොරොත්තු වෙනවා ඉදිරියේදී. මන් මෙතැනදී use කරන programming language එක C හෝ C++. නමුත් logical model එක ගැන කතා කරන නිසා ඕන කෙනෙකුට වෙනත් programming language එකක් use කරල උනත් පහසුවෙන් implementation කර ගන්න පුළුවන්.

Advertisements